2014-01-24 55 views
-2

如何知道对象的哪些属性在@PostUpdate事件中进行了更新?如何知道在@PostUpdate上修改了哪些实体属性?

更新 - 我注意到@PostUpdate在提交更改的实际时刻之前被调用,所以如果我使用另一个数据源访问数据库到同一个数据库,我仍然可以手动查询它并检查更改通过实体唯一ID。当然,这可能是很多工作,因为如果对象的某个相关对象发生更改,则该对象被认为发生了更改。我想要的是这样的(http://docs.doctrine-project.org/en/2.0.x/reference/events.html#preupdate),但对于openjpa。请参阅“PreUpdateEventArgs”概念。

更新 - 同时检查OpenJPA的专有@Auditable

回答

1

有关该功能的一整个讨论可以在这里找到 - http://openjpa.208410.n2.nabble.com/Audit-log-with-OpenJPA-tc6557932.html

这些问题使用替代方案分别使用PersistenceCapable(http://webspherepersistence.blogspot.com.br/2009/01/auditing-with-openjpa.html)和一个ThreadLocal结合@PreUpdate和@PostLoad(http://struberg.wordpress.com/2010/07/31/howto-changelog-with-jpa/

正如@koitoer所述,JPA 2.1。没有这样的功能,AFAHK。

虽然,专门为OpenJPA中,似乎有一个合理的解决方案

http://openjpa.apache.org/builds/2.2.0/apache-openjpa/docs/ref_guide_audit.html

相关问题