我试图选择每个trackedResource实体的最新版本,其中position_source_feed_id具有特定值。
我有一个功能齐全的PostgreSQL查询:
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时,我得到:
javax.persistence.PersistenceException: org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111
可能是由于实体上的几个UUID字段(包括position_source_feed_id)
答案 0 :(得分:0)
我希望以下查询能够正常工作:
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();
查询的工作方式是向Envers询问YourEntity
的所有修订版,您只对查询返回position_source_feed_id
等于index.html
的实际实体本身(不包括删除)感兴趣。提供的价值。然后将结果集限制为最高修订版本号,并将其返回。