將Hibernate從3.3.2.GA升級到4.3.11.Final時,我在查詢審計表時遇到了「EntityNotFoundException」。Hibernate Envers:在ManyToOne關係中找不到實體
我的模型:
@Entity
@Audited
public class A {
[...]
@ManyToOne
@JoinColumn(name = "B_ID", nullable = false)
private EntityB entityB;
[...]
}
@Entity
@Audited
public class B {
[...]
}
,當我在數據庫中查詢審覈表(SQLServer的),我看到了我的異常的原因。
select * from A_AUD where id = 1 => 1 result with VER_REV = 100 (and B_ID = 10)
select * from B_AUD where id = 10 => 2 results with VER_REV = 200 and 300
當我試着使用JPA加載:
getAuditReader(anEntityManager).createQuery().forRevisionsOfEntity(A.class false, true).add(AuditEntity.id().eq(1));
Hibernate是懶加載B_AUD。但在查詢中,他正在檢查VER_REV < = 100. 並且找不到結果。
這是我的數據沒有檢查休眠3的問題嗎? 或者這可以在代碼中解決?
我發現了一些像這樣的答案元素,但是我找不到這個問題的「良好做法」。 更新數據庫中的VER_REV可能會影響其他實體(我的模型有點複雜)。並且「修補」Envers必須是最後的解決方案。
在此先感謝您的答案。
你可以包括你使用Hibernate Envers特定的引導配置嗎?你還可以在你的文章中包含來自'EntityB'一側的精確映射嗎? – Naros