如何知道@PostUpdate事件中对象的哪些属性已更新?
UPDATE - 我注意到@PostUpdate是在提交更改的实际时刻之前调用的,所以如果我使用另一个数据源访问同一个数据库的数据库,我仍然可以手动查询它并通过以下方式检查更改:实体唯一ID。当然,这可能是很多工作,因为如果对象的一个相关对象被更改,则会认为该对象已更改。我想要的是这样的(http://docs.doctrine-project.org/en/2.0.x/reference/events.html#preupdate)但是对于openjpa。请参阅“PreUpdateEventArgs”概念。
更新 - 同时检查openJPA专有@Auditable
答案 0 :(得分: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