Получить полные Envers ревизии, на которые влияет конкретный объект

Способ хранения данных ревизии, каждый объект, затронутый ревизией, получает отдельную запись в таблице _AUD . Поэтому, когда я ищу ревизии, затрагивающие объект 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' [выберите e, r, r из models.AgentShift_AUD e, models.RevisionData r, models.RevisionData r где e.originalId.REV.id в (: _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'». Можно ли еще что-нибудь попробовать?

8
задан Brad Mace 9 August 2011 в 14:16
поделиться