Руководство по многоуровневому редактированию сущностей
Пользователь имеет n контактов. Контакт может иметь локализованный комментарий (комментарии распределяются между контактами). Java Beans:
@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;
}
Если я изменю немецкую локализацию (Comment.de) контакта (Contact.comment), то это создаст новую ревизию, но не для Пользователя. Если я запрашиваю envers для пользовательских ревизий, я никогда не увижу это "изменение уровня 2", потому что отношение между пользователем и контактом не изменилось, изменилась только немецкая строка в комментарии к контакту.
Но я хочу видеть в пользовательской истории новую запись (изменен немецкий комментарий для контакта XYZ).
Как я могу это сделать?: D
Thxs
1 ответ
Возможно, идея заключается в том, чтобы использовать пользовательский журнал ревизий (http://docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html/ch15.html#envers-revisionlog), в котором вы храните " корневая сущность / сущности, для которых изменение является актуальным. Это может быть не самым эффективным, но в зависимости от модели вашего домена, это может быть то, что вы хотите.