首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate-Envers审计查询:选择在所有实体中字段与值相等的最新实体修订

Hibernate-Envers审计查询:选择在所有实体中字段与值相等的最新实体修订
EN

Stack Overflow用户
提问于 2019-08-05 20:41:25
回答 1查看 2.8K关注 0票数 0

我正在尝试选择我的每个trackedResource实体的最新修订版,其中position_source_feed_id具有特殊的价值。

我有一个功能性的PostgreSQL查询:

代码语言:javascript
复制
select tr0.*
from
    trackedresource_aud tr0
where
    tr0.position_source_feed_id='7870b8b9-4b98-4ea7-8fb8-99746d7f0e85'
and
    tr0.rev=(
        select
            max(tr1.rev)
        from
            trackedresource_aud tr1
        where
            tr1.id=tr0.id
        and
            tr1.position_source_feed_id=tr0.position_source_feed_id
    )
order by
    tr0.rev desc
;

但我似乎无法得到一个匹配的AuditQuery。

当我尝试上面的createNativeQuery时,我得到:

代码语言:javascript
复制
javax.persistence.PersistenceException: org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111

可能是因为实体上有几个UUID字段,包括position_source_feed_id

EN

回答 1

Stack Overflow用户

发布于 2019-08-07 20:56:05

我希望下面的查询能够工作:

代码语言:javascript
复制
AuditReader reader = AuditReaderFactory.get( session );
YourEntity lastRevision = reader.createQuery()
  .forRevisionsOfEntity( YourEntity.class, true, false )
  .add( AuditEntity.property( "position_source_feed_id" ).eq( feedId ) )
  .addOrder( AuditEntity.revisionNumber().desc() )
  .setMaxResults( 1 )
  .getSingleResult();

对于YourEntity的所有修订,查询的工作方式只对返回实际实体本身(不包括删除)的查询感兴趣,其中position_source_feed_id等于提供的值。结果集然后被限制在最高的修订数,并被返回。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57365833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档