2012-01-27 7 views
4

ユーザーはn個の連絡先を持っています。連絡先には、ローカライズされたコメント(コメントは連絡先間で共有されます)を持つことができます。 Javaの豆:私は連絡先(Contact.comment)のドイツ語ローカライズ(Comment.de)を変更した場合エンベロープ複数エンティティリビジョンハウプト

@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; 
} 

が、これはユーザーのために新しいリビジョンを作成しなくなります。ユーザーリビジョンを要求すると、ユーザーと連絡先の関係が変更されないため、この「レベル2の変更」は表示されません。連絡先コメントのドイツ語文字列のみが変更されました。

しかし、ユーザー履歴に新しいエントリが表示されます(連絡先XYZのドイツ語のコメントが変更されています)。

どうすればいいですか? :D

Thxs

+0

問題を解決できましたか? – codenoob

答えて

0

たぶんアイデアは、カスタムのリビジョンログ(http://docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html/ch15.htmlを使用することです#envers-revisionlog)を使用して、変更が関連する「ルート」エンティティ/エンティティを保存します。これは最も効率的ではないかもしれませんが、あなたのドメインモデルによっては、これがあなたが望むものかもしれません。

関連する問題