Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何实现可移植的JPA isDirty()方法?_Java_Hibernate_Jpa - Fatal编程技术网

Java 如何实现可移植的JPA isDirty()方法?

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>();

我试图跟踪JPA OneToMany关联中的更改,以便在事件发生时通知订阅者对象的某个区域(其中一个关联)已更改。我首先尝试对列表进行专门化,以了解变化

@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()