2012-01-27 54 views
4

用戶有n個聯繫人。聯繫人可以有本地化的評論(評論由聯繫人共享)。 Java組件:envers多級實體修訂howto

@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

+0

你能解決這個問題嗎? – codenoob 2016-06-22 23:36:09

回答

0

也許一個想法是使用自定義的修訂日誌(http://docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html/ch15.html #envers-revisionlog),其中存儲了與其相關的「根」實體/實體。這可能不是最有效的,但取決於你的域模型,這可能是你想要的。

相關問題