Java 如何实现可移植的JPA isDirty()方法?
我试图跟踪JPA OneToMany关联中的更改,以便在事件发生时通知订阅者对象的某个区域(其中一个关联)已更改。我首先尝试对列表进行专门化,以了解变化Java 如何实现可移植的JPA isDirty()方法?,java,hibernate,jpa,Java,Hibernate,Jpa,我试图跟踪JPA OneToMany关联中的更改,以便在事件发生时通知订阅者对象的某个区域(其中一个关联)已更改。我首先尝试对列表进行专门化,以了解变化 @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) @JoinColumn(name = "col_name") private List<SomeType> oneOfManyLists = new CAArrayList<SomeType>();
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "col_name")
private List<SomeType> oneOfManyLists = new CAArrayList<SomeType>();
下一个可以工作,但不能在JPA的不同实现之间移植
((PersistentBag) obj.getSomeList()).isDirty()
如何以可移植的方式完成这项工作?我认为您试图以错误的级别(太低)完成这项工作
不要试图跟踪对某个类型的列表的所有内部更改,而是将对该列表的功能更改封装在特定的服务中,当必须修改该列表时,所有其他服务(和表示层)将委托给该服务。在这种集中式服务中,当服务更改某些类型的列表时,请通知订阅者。@Matt这可能不太重要,但我们的团队对这些事情非常严格,我们始终在寻找干净的解决方案。可能是我忽略了JPAAPI中的某些内容。
((CAArrayList) obj.getSomeList()).isDirty()
((PersistentBag) obj.getSomeList()).isDirty()