Envers 多级实体修订指南

2024-05-10

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

@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

Thxs


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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Envers 多级实体修订指南 的相关文章

随机推荐