2014-01-24 51 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

相關問題