Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa envers多级实体修订指南_Jpa_One To Many_Many To One_Hibernate Envers - Fatal编程技术网

Jpa envers多级实体修订指南

Jpa envers多级实体修订指南,jpa,one-to-many,many-to-one,hibernate-envers,Jpa,One To Many,Many To One,Hibernate Envers,用户有n个联系人。联系人可以有本地化注释(注释在联系人之间共享)。Java bean: @Audited @Entity public class User { @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true) Set<Context> contacts; } @Audited @Enti

用户有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;
}
@已审核
@实体
公共类用户{
@OneToMany(fetch=FetchType.EAGER,
cascade=CascadeType.ALL,
(删除=真)
设置联系人;
}
@审计
@实体
公共类联系人{
@manytone(fetch=FetchType.EAGER,
级联={
CascadeType.MERGE,
cascade type.PERSIST,
CascadeType.REFRESH})
评论;
}
@审计
@实体
公开课评论{
字符串de;
字符串en;
字符串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-修订日志),其中存储与变更相关的“根”实体。这可能不是最有效的,但取决于您的域模型,这可能是您想要的。

您是否能够解决此问题?此问题的解决方案是否已集成到最新版本的Envers中??我和他有同样的问题。