我的场景是我有两个不同的 API 更新数据库表,一个我们将调用内部和另一个外部,其中一个是用过时的数据覆盖值。
通过 Hibernate 更新的数据当时在应用程序的内存中。如果外部源更新列 (statusCd),而此时它仍在内部应用程序的内存中,则在将其保存在内部应用程序中的那一刻,该值将被陈旧的数据覆盖。
现在我意识到有更多的方法可以解决这个问题,但是我们已经确定,只要可以通过 Hibernate 做到这一点,限制对该对象的 Hibernate 代码的修复是风险最小的。
所以我有两个问题:
- 是否可以通过 Hibernate 说“是的,请在创建此列时将此值插入此列,但是,除非该值为‘取消’,否则请不要更新此列中的此值?”
- 是否可以在更新之前通过 Hibernate 进行陈旧数据检查,以查看在应用程序内存中时值是否已更改?
以下是相关对象的片段:
@Entity
@Table(name = "Object1")
@XmlRootElement
public class Object1 implements java.io.Serializable {
private RefObject1Status statusCd;
@ManyToOne(fetch = FetchType.EAGER)
@Fetch(FetchMode.JOIN)
@JoinColumn(name = "statusCd", nullable = false)
public RefObject1Status getStatusCd() {
return this.statusCd;
}
public void setStatusCd(RefObject1Status cd) {
this.statusCd = cd;
}
}
感谢您的时间,
亚历克斯