@Test public void testRevisionsLtQuery() { List result = getAuditReader().createQuery() .forRevisionsOfEntity( StrIntTestEntity.class, false, true ) .addProjection( AuditEntity.revisionNumber().distinct() ) .add( AuditEntity.revisionNumber().lt( 3 ) ) .addOrder( AuditEntity.revisionNumber().asc() ) .getResultList(); Assert.assertEquals( Arrays.asList( 1, 2 ), result ); }
@Test public void testRevisionsGtWithPropertyQuery() { List result = getAuditReader().createQuery() .forRevisionsOfEntity( StrIntTestEntity.class, false, true ) .addProjection( AuditEntity.revisionNumber() ) .add( AuditEntity.revisionNumber().gt( 1 ) ) .add( AuditEntity.property( "number" ).lt( 10 ) ) .getResultList(); Assert.assertEquals( TestTools.makeSet( 3, 4 ), new HashSet<>( result ) ); }
@Test @TestForIssue(jiraKey = "HHH-8036") public void testEntityIdOrdering() { List<IntTestEntity> list = getAuditReader().createQuery().forRevisionsOfEntity( IntTestEntity.class, true, true ) .add( AuditEntity.revisionNumber().lt( 2 ) ) .addOrder( AuditEntity.id().desc() ) .getResultList(); Assert.assertEquals( Arrays.asList( new IntTestEntity( 10, 2 ), new IntTestEntity( 2, 1 ) ), list ); }
@Test public void testAssociationQuery() { final AuditReader auditReader = getAuditReader(); final Car result1 = (Car) auditReader.createQuery().forEntitiesAtRevision( Car.class, 1 ).traverseRelation( "owner", JoinType.INNER ) .add( AuditEntity.property( "name" ).like( "Ford%" ) ).getSingleResult(); assertEquals( "Unexpected single car at revision 1", ford.getId(), result1.getId() ); Car result2 = (Car) auditReader.createQuery().forEntitiesAtRevision( Car.class, 1 ).traverseRelation( "owner", JoinType.INNER ).traverseRelation( "address", JoinType.INNER ) .add( AuditEntity.property( "number" ).eq( 30 ) ).getSingleResult(); assertEquals( "Unexpected single car at revision 1", toyota.getId(), result2.getId() ); List<Car> resultList1 = auditReader.createQuery().forEntitiesAtRevision( Car.class, 1 ).traverseRelation( "owner", JoinType.INNER ) .add( AuditEntity.property( "age" ).ge( 30 ) ).add( AuditEntity.property( "age" ).lt( 40 ) ).up() .addOrder( AuditEntity.property( "make" ).asc() ).getResultList(); assertEquals( "Unexpected number of cars for query in revision 1", 2, resultList1.size() ); assertEquals( "Unexpected car at index 0 in revision 1", ford.getId(), resultList1.get( 0 ).getId() ); assertEquals( "Unexpected car at index 1 in revision 2", toyota.getId(), resultList1.get( 1 ).getId() ); Car result3 = (Car) auditReader.createQuery().forEntitiesAtRevision( Car.class, 2 ).traverseRelation( "owner", JoinType.INNER ) .add( AuditEntity.property( "age" ).ge( 30 ) ).add( AuditEntity.property( "age" ).lt( 40 ) ).up() .addOrder( AuditEntity.property( "make" ).asc() ).getSingleResult(); assertEquals( "Unexpected car at revision 2", ford.getId(), result3.getId() ); }
private Auditable getPrevious(AuditReader reader, Auditable entityForRevision, MyRevisionEntity revEntity) { try { return (Auditable) reader.createQuery().forRevisionsOfEntity(entityForRevision.getClass(), true, true) .add(AuditEntity.id().eq(entityForRevision.getId())) .add(AuditEntity.revisionNumber().lt(revEntity.getId())) .addOrder(AuditEntity.revisionNumber().desc()) .setMaxResults(1) .getSingleResult(); } catch (NoResultException e) { return null; } }
/** * @param reader * @param clazz * @param identifier * @param currentRevision * @return */ public AuditQuery getPreviousPreferredTermQuery(int currentRevision, String conceptId) { return readerService.getAuditReader().createQuery() .forRevisionsOfEntity(ThesaurusTerm.class, false, true) .add(AuditEntity.revisionNumber().lt(currentRevision)) .add(AuditEntity.property("prefered").eq(true)) .add(AuditEntity.relatedId("concept").eq(conceptId)); }
/** * Builds the query to get the previous version * * @param reader * @param clazz * @param identifier * @param currentRevision * @return */ public AuditQuery getPreviousVersionQuery(Class<?> clazz, Serializable identifier, int currentRevision) { return readerService.getAuditReader().createQuery().forRevisionsOfEntity(clazz, false, true) .addProjection(AuditEntity.revisionNumber().max()) .add(AuditEntity.id().eq(identifier)) .add(AuditEntity.revisionNumber().lt(currentRevision)); }