修訂數據存儲受修訂每個對象的方式獲得在_AUD
表中單獨記錄完整Envers修訂。因此,當我搜索影響對象A
的修訂時,我將返回修訂爲3
的對象B
的條目,但如果對象A
和/或C
也在修訂3
中更改,則不會返回這些條目, B
是該修訂版中修改的唯一對象。我想要做的是每個修訂都會影響對象B
,返回受該修訂影響的所有對象。獲取其中的特定對象受到影響
something_AUD desired actual id|REV id|REV id|REV ------------- ------- ------ A|1 B|2 B|2 B|2 B|3 B|3 B|3 C|3 C|3
我一直在試圖通過運行初始查詢找到了相關的修訂要做到這一點:
AuditQuery query = AuditReaderFactory.get(entity.em()).createQuery()
.forRevisionsOfEntity(type, false, true)
.add(AuditEntity.id().eq(entity.id));
,然後運行下面的查詢爲每個結果:
int rev_id = ((RevisionData) data[1]).getId();
AuditQuery q = AuditReaderFactory.get(JPA.em()).createQuery()
.forRevisionsOfEntity(type, false, true)
.add(AuditEntity.revisionNumber().eq(rev_id));
List<Object[]> real_data = q.getResultList();
但這導致QuerySyntaxException
:
別名'r'的重複定義[select e,r,r from models.AgentShift_AUD e,models.RevisionData r,models.RevisionData r 其中e.originalId.REV.id in(:_p0)和e.originalId。 REV.id = r.id和 e.originalId.REV.id在(:_p1)和e.originalId.REV.id = r.id爲了通過 e.originalId.REV.id ASC,e.originalId.REV .id asc]
我已經嘗試過幾個變種,它們都導致了相同的「別名'r'的重複定義」。還有什麼我可以嘗試嗎?
不知道你的意思是:「但是,如果其他實體也受這些修訂,這些條目不退換」。一個例子可以幫助你理解你想要達到的目標以及你面臨的問題。 –
更新後添加:我不認爲你可以用envers api來做到這一點,你必須使用JPA,因爲你試圖從一個查詢中的多個表中進行查詢:http://ezingsoft.com/ ?p = 52 –
實體'B'與實體'A'和'C'有一些關係嗎? – Naros