Search code examples
postgresqlhibernatespring-boothibernate-envers

hibernate enverse : how to get changed value in relation field


i am using hibernate enverse 5.2.10.Final with postgres data base.

AuditReader auditReader = AuditReaderFactory.get(entityManager);
        String newValue = (String) auditReader.createQuery()
                .forEntitiesAtRevision(Vehicle.class, 2203869)
                .traverseRelation("vehicleType", JoinType.INNER).addProjection(AuditEntity.property("id")).up()
                .add(AuditEntity.property("vehicleType").hasChanged())              
                .add(AuditEntity.id().eq(2203422l))
                .add(AuditEntity.revisionNumber().eq(2203869)).getSingleResult();

vehicle table has many-to-one relationship with vehicleType. how to get the changes of vehicle type property of vehicle entity using enverse query. here i get no result found error. cannot get get value with Audientity.property("vehicleType")..hasChanged() their's a error property not found.


Solution

  • auditReader.createQuery()
      .forEntitiesAtRevision( Vehicle.class, revisionNumber )                                           
      .traverseRelation( propertyname, JoinType.LEFT )
      .addProjection( AuditEntity.property("id") ).up()
      .add( AuditEntity.property( propertyname ).hasChanged() )
      .add( AuditEntity.id().eq( VehicleId ) )                                  
      .getSingleResult()