【问题标题】:onSave() (for any Entity saved with Hibernate/Spring Data Repositories)onSave()(对于使用 Hibernate/Spring Data Repositories 保存的任何实体)
【发布时间】:2016-10-18 04:56:56
【问题描述】:

如果我的实体有计算字段应该在保存到数据库之前更新(db insertupdate), 如何在 Hibernate 或 Spring Data Repository save() 之前挂钩方法调用?

【问题讨论】:

    标签: java spring hibernate spring-data


    【解决方案1】:

    我认为最适合您的选择是EntityListener 使用@PrePersist@PreUpdate 注释,为您的实体侦听器创建配置,您将可以访问要保存的每个实例,此方法正在每次您尝试使用 hibernate 或 spring 数据存储库持久化或更新某些内容时调用

    public class EntityToPersistListener{
    
       @PrePersist
       @PreUpdate
       public void methodExecuteBeforeSave(final EntityToPersist reference) {
          //Make any change to the entity such as calculation before the save process
          reference.setAmount(xxxx)
        }
    
    }
    

    你只需要在你的实体 bean 上面添加一个注解

    @Entity
    @Table(name = "", schema = "", catalog = "")
    @EntityListeners(EntityToPersistListener.class)
    public class EntityToPersist implements Serializable {
    

    查看此link 以获取更多参考

    【讨论】:

    • 太棒了。剩下的唯一情况,如何在不添加@EntityListeners 注释的情况下对所有实体执行此操作。
    • 我认为您需要为每个实体定义侦听器,因为它们将在方法中接收对象,而且还有一个 orm.xml 文件,您可以在其中定义侦听器和审计。
    猜你喜欢
    • 1970-01-01
    • 2020-06-14
    • 2017-05-06
    • 1970-01-01
    • 2023-01-27
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    相关资源
    最近更新 更多