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