修订数据的存储方式 每个受修订影响的对象都会在_AUD
表中获得单独的记录。因此,当我搜索影响 object 的修订时A
,我将返回 revision3
用于 object的条目B
,但如果 objectsA
和/或C
在 revision 中也发生了更改,3
则不会返回这些条目,给人的印象B
是唯一修改的对象那个修订。我要做的是对于每个影响 object 的修订B
,返回受该修订影响的所有对象。
something_AUD 期望 实际 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' 的重复定义 [从 models.AgentShift_AUD e、models.RevisionData r、models.RevisionData r 中选择 e、r、r 其中 e.originalId.REV.id in (:_p0) 和 e.originalId.REV.id = r.id and e.originalId.REV.id in (:_p1) and e.originalId.REV.id = r.id order by e.originalId.REV.id asc, e.originalId.REV.id asc]
我已经尝试了几种变体,这些变体都导致了相同的“别名'r'的重复定义”。还有什么我可以尝试的吗?