我的系统中有三个实体 - 当另外两个实体的字段发生变化时,必须更新其中一个实体:
@Entity
public class Order {
private String name;
private Integer quantity;
private String status;
}
@Entity
public class OrderLocation {
private String status;
private String desc;
}
@Entity
public class OrderKey {
private String generatedKey;
}
因此,在订单或OrderLocation上的任何字段更改后,我必须重新生成密钥(在代码中),然后将其保存回OrderKey。
我一直在寻找EntityListeners来做这件事,但不确定是使用JPA还是Hibernate版本。我想理想地使用注释。
非常感谢任何指导 - 提前感谢。
答案 0 :(得分:0)
我真的不赞成这样的解决方案。在我正在工作的项目中,我们使用执行所有处理的特殊处理程序。处理程序必须知道在发生更改时必须更新哪些实体。例如。使用处理数据库更新的抽象层。如果对Order或OrderLocation进行了更改,则它会处理OrderKey的更新。
如果您使用侦听器,您也可能遇到循环问题。所以我建议在实体中使用处理程序而不是listerners。
但是如果您想使用这样的机制,也许您应该尝试使用@PrePersist和@PreUpdate来调用能够处理实体更改的方法。