修改字段我使用Hibernate 4.3.1.Final休眠Envers創造了外商獨資一對多關係
如果我有兩個實體,假設A和B A包含了一組被註釋作爲B對象OneToMany
協會。
如果我將「org.hibernate.envers.global_with_modified_flag」設置爲true,並將「org.hibernate.envers.modified_flag_suffix」設置爲「Modified」,Envers會正確地爲該表中的所有列添加指定後綴的列,但它也希望爲每個協會找到一個修改的專欄,儘管他們是由外方所有。
在下面的例子中,當我認爲在A中需要期望列「foo」和「fooModified」並且在B中爲「aIdModified」時,Envers期望A中的列爲「foo」「fooModified」和「bObjectsModified」
@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代碼的詳細信息,它沒有業務知識,並且使添加雙向關聯變得更加困難。
感謝您「另請注意,修改的字段名稱基於Java類中的屬性名稱,而不是Hibernate ORM其餘部分使用的Column註釋中的值。我在Column註釋中使用名稱值獲取DuplicateMappingException,並且JPA將查找名稱值列。將命名。物理 - 精靈設置爲PhysicalNamingStrategyStandardImpl解決了這個問題。 – tweekran