【问题标题】:How do I know what entity attributes were modified on @PostUpdate?我如何知道@PostUpdate 上修改了哪些实体属性?
【发布时间】:2014-02-14 20:37:50
【问题描述】:

我如何知道在@PostUpdate 事件中更新了对象的哪些属性?

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

更新 - 还要检查 openJPA 专有的@Auditable

【问题讨论】:

    标签: java jpa-2.0 openjpa


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多