2012-09-07 38 views
1

我正在使用Hibernate envers 3.6.3.Final。我可以審計表,我可以看到_audit表填充了revision_number,revision_type和實體數據。 我正在創建一個歷史記錄頁面,我希望顯示所有修訂條目,以便當用戶單擊修訂標識時,可以顯示實體數據以及修訂類型,即添加,刪除或修改它。我正在嘗試使用AuditQuery,但我不確定如何獲取給定修訂和給定實體類的revision_type信息。是否可以在AuditQueryHibernate Envers:如何獲取給定修訂版和給定實體類的revision_type信息

我可以通過編寫Hibernate查詢來獲得'RevisionType'信息。但我想重用任何現有的框架API。換句話說,我將不同的'RevisionType'作爲標準傳遞給AuditQuery(即對DELETE,INSERT和UPDATE的多個查詢)並檢查是否得到任何結果,但這不是有效的方式。

+0

@Boris Stitnicky爲何選擇這個投票? – Rabi

+0

因爲問題不應該寫成工作單。換句話說,你有什麼嘗試? –

回答

3

現在它值得。我有同樣的問題,並能夠通過使用AuditQueryCreator#forRevisionsOfEntity方法這樣獲得的修訂類型:

List<Object[]> resultList = auditReader.createQuery() 
    .forRevisionsOfEntity(entityClass, entityClass.getName(), false, true) 
    .add(AuditEntity.revisionNumber().eq(revision)).getResultList(); 

這回關於指定的修訂變化的陣列三元組列表。數組三元組包含實體,實體信息以及最終的修訂類型。

確保設定的selectEntitiesOnly參數AuditQueryCreator#forRevisionsOfEntity的。如果設置爲true該方法將僅返回實體對象列表。

這裏使用了Hibernate Envers 4.2.2版。

+0

Hibernate Envers 4. *解決了這個問題。 – Rabi

相關問題