【问题标题】:envers multi level entity revision howtoEnvers 多级实体修订指南
【发布时间】:2012-02-20 10:35:10
【问题描述】:

用户有 n 个联系人。一个联系人可以有一个本地化的评论(评论在联系人之间共享)。 Java Bean:

@Audited
@Entity
public class User {
    @OneToMany(fetch = FetchType.EAGER,
               cascade = CascadeType.ALL,
               orphanRemoval = true)
    Set<Context> contacts;
}

@Audited
@Entity
public class Contact {
    @ManyToOne(fetch = FetchType.EAGER,
               cascade = {
                          CascadeType.MERGE,
                          CascadeType.PERSIST,
                          CascadeType.REFRESH})
    Comment comment;
}

@Audited
@Entity
public class Comment {
    String de;
    String en;
    String fr;
}

如果我更改联系人 (Contact.comment) 的德语本地化 (Comment.de),那么这将创建一个新修订版,但不会针对用户。如果我向 envers 询问用户修订,我将永远不会看到这个“2 级更改”,因为用户和联系人之间的关系没有改变,只有联系人评论中的德语字符串发生了变化。

但我想在用户历史记录中看到一个新条目(更改了联系人 XYZ 的德语评论)。

我该怎么做? :D

谢谢

【问题讨论】:

  • 你能解决这个问题吗?
  • 最新版本的 Envers 中是否集成了针对此问题的解决方案?我和有同样的问题。

标签: jpa one-to-many many-to-one hibernate-envers


【解决方案1】:

也许一个想法是使用自定义修订日志 (http://docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html/ch15.html#envers-revisionlog),您可以在其中存储与更改相关的“根”实体/实体。这可能不是最有效的,但取决于您的域模型,这可能是您想要的。

【讨论】:

    猜你喜欢
    • 2012-01-04
    • 1970-01-01
    • 2021-04-06
    • 2017-11-28
    • 2019-08-20
    • 1970-01-01
    • 2018-04-16
    • 2019-12-24
    • 2020-03-09
    相关资源
    最近更新 更多