gpt4 book ai didi

jpa - 获取影响特定对象的完整 Envers 修订

转载 作者:行者123 更新时间:2023-12-04 08:56:01 27 4
gpt4 key购买 nike

修订数据的存储方式每个受修订影响的对象在 _AUD 中都有一个单独的记录。 table 。因此,当我搜索影响对象的修订时 A ,我会找回修订版为3的条目用于对象 B , 但如果对象 A和/或 C修订版 3 中也发生了变化,这些条目不会返回,给人的印象是 B是该修订版中唯一修改的对象。我想要做的是针对每个影响对象的修订B ,返回受该修订影响的所有对象。

something_AUD     desired     actualid|REV            id|REV      id|REV-------------     -------     ------A|1               B|2         B|2B|2               B|3         B|3B|3               C|3C|3

I've been trying to do this by running an initial query to find the relevant revisions:

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 :

Duplicate definition of alias 'r' [select e, r, r from models.AgentShift_AUD e, models.RevisionData r, models.RevisionData r where e.originalId.REV.id in (:_p0) and 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'的重复定义”。还有什么我可以尝试的吗?

最佳答案

这是我到目前为止想出的。它不是最干净的解决方案,但它有效:

AuditReader reader = AuditReaderFactory.get(entity.em());
AuditQuery query = reader.createQuery()
.forRevisionsOfEntity(type, false, true)
.add(AuditEntity.id().eq(entity.id));

List<Object[]> raw_results = query.getResultList();
List<Object[]> complete_results = new ArrayList<Object[]>(raw_results.size());

for (Object[] data : raw_results) {
int rev_id = ((RevisionData) data[1]).getId();
AuditQuery q = reader.createQuery()
.forRevisionsOfEntity(type, false, true)
.add(AuditEntity.revisionNumber().eq(rev_id));
List<Object[]> real_data = q.getResultList();
complete_results.addAll(real_data);
}

希望有人会想出更好的方法,尤其是可以在单个查询中完成的方法。

关于jpa - 获取影响特定对象的完整 Envers 修订,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6946101/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com