Я использую Hibernate 4.3.1.Final
Если у меня есть две сущности, скажем, A и B. A содержит набор объектов B, которые помечены как ассоциация OneToMany
.
Если я установлю для параметра "org.hibernate.envers.global_with_modified_flag" значение true, а для параметра "org.hibernate. envers.modified_flag_suffix" на "Modified", то Envers правильно добавляет столбцы для всех столбцов в этой таблице с указанным суффиксом, но также ожидает найти измененный столбец для каждой ассоциации, даже если они принадлежат иностранному side.
В приведенном ниже случае Envers ожидает столбцы в A для "foo", "fooModified" и "bObjectsModified", когда я думаю, что он должен ожидать столбцы для "foo" и "fooModified" в A и "aIdModified" в Б.
@Entity
@Table("A")
@Audited
class A {
private String foo;
private Set<B> bObjects;
@Column(name = "foo")
public getFoo( return foo; )
@OneToMany(fetch = FetchType.LAZY,
mappedBy = "a")
public Set<B> getBObjects() { return bObjects; }
}
@Entity
@Table("B")
@Audited
class B {
private A a;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "aId")
public getA(){ return a; }
}
Кто-нибудь еще видел это? Как мне изменить это поведение, кроме как аннотировать каждое из моих @ManyToOne
отношений с @Audited(withModifiedFlag=false)
. У меня много тысяч отношений, так что даже проверка этой части будет огромной болью. Альтернативой является принуждение базы данных к сведениям о нашем Java-коде, которые ей не нужны, и это значительно усложняет добавление двунаправленных ассоциаций.