@Test public void testEmptyDisjunctionRevisionOfEntityQuery() { List result = getAuditReader().createQuery() .forRevisionsOfEntity( StrIntTestEntity.class, false, true ) .add( AuditEntity.disjunction() ) .getResultList(); assert result.size() == 0; }
List<Integer> queryIds = Arrays.asList( id2, id3 ); AuditDisjunction disjunction = AuditEntity.disjunction(); for ( Integer id : queryIds ) { AuditCriterion crit = AuditEntity.revisionNumber().maximize()
@Test @TestForIssue(jiraKey = "HHH-7800") public void testMaximizeInDisjunction() { List<Integer> idsToQuery = Arrays.asList( id1, id3 ); AuditDisjunction disjunction = AuditEntity.disjunction(); for ( Integer id : idsToQuery ) { disjunction.add( AuditEntity.revisionNumber().maximize().add( AuditEntity.id().eq( id ) ) ); } List result = getAuditReader().createQuery() .forRevisionsOfEntity( StrIntTestEntity.class, true, true ) .add( disjunction ) .getResultList(); Set<Integer> idsSeen = new HashSet<Integer>(); for ( Object o : result ) { StrIntTestEntity entity = (StrIntTestEntity) o; Integer id = entity.getId(); Assert.assertTrue( "Entity with ID " + id + " returned but not queried for.", idsToQuery.contains( id ) ); if ( !idsSeen.add( id ) ) { Assert.fail( "Multiple revisions returned with ID " + id + "; expected only one." ); } } }
@Test public void testAuditQueryWithJoinedInheritanceUsingWithSemanticsOneToOne() { List results = getAuditReader().createQuery().forEntitiesAtRevision( EntityB.class, 1 ) .add( disjunction() .add( property( "name" ).like( "b1" ) ) .add( property( "name" ).like( "b2" ) ) ) .traverseRelation( "relationToD", JoinType.INNER ) .add( property( "foo" ).like( "bar" ) ) .getResultList(); assertEquals( 2, results.size() ); }
@Test public void testAuditQueryWithJoinedInheritanceUsingWithSemanticsManyToOne() { List results = getAuditReader().createQuery().forEntitiesAtRevision( EntityB.class, 1 ) .add( disjunction() .add( property( "name" ).like( "b1" ) ) .add( property( "name" ).like( "b2" ) ) ) .traverseRelation( "relationToC", JoinType.INNER ) .add( property( "foo" ).like( "bar" ) ) .getResultList(); assertEquals( 2, results.size() ); }
@Test public void testDisjunctionOfPropertiesFromDifferentEntities() { AuditReader auditReader = getAuditReader(); // all cars where the owner has an age of 20 or lives in an address with number 30. List<Car> resultList = auditReader.createQuery() .forEntitiesAtRevision( Car.class, 1 ) .traverseRelation( "owner", JoinType.INNER, "p" ) .traverseRelation( "address", JoinType.INNER, "a" ) .up().up().add( AuditEntity.disjunction().add(AuditEntity.property( "p", "age" ) .eq( 20 ) ).add( AuditEntity.property( "a", "number" ).eq( 30 ) ) ) .addOrder( AuditEntity.property( "make" ).asc() ).getResultList(); assertEquals( "Expected two cars to be returned, Toyota and VW", 2, resultList.size() ); assertEquals( "Unexpected car at index 0", toyota.getId(), resultList.get(0).getId() ); assertEquals( "Unexpected car at index 1", vw.getId(), resultList.get(1).getId() ); }
@Test public void testAuditQueryWithJoinedInheritanceUsingWithSemanticsToOne() { List results = getAuditReader().createQuery().forEntitiesAtRevision( EntityB.class, 1 ) .add( disjunction() .add( property( "name" ).like( "b1" ) ) .add( property( "name" ).like( "b2" ) ) ) .traverseRelation( "relationToC", JoinType.INNER ) .add( property( "foo" ).like( "bar" ) ) .up() .traverseRelation( "relationToD", JoinType.INNER ) .add( property( "foo" ).like( "bar" ) ) .getResultList(); assertEquals( 2, results.size() ); }
@Test @TestForIssue(jiraKey = "HHH-7800") public void testBetweenInsideDisjunction() { List result = getAuditReader().createQuery() .forRevisionsOfEntity( StrIntTestEntity.class, true, true ) .add( AuditEntity.disjunction() .add( AuditEntity.property( "number" ).between( 0, 5 ) ) .add( AuditEntity.property( "number" ).between( 20, 100 ) ) ) .getResultList(); for ( Object o : result ) { StrIntTestEntity entity = (StrIntTestEntity) o; int number = entity.getNumber(); Assert.assertTrue( (number >= 0 && number <= 5) || (number >= 20 && number <= 100) ); } }
.up() .add( AuditEntity.disjunction() .add( AuditEntity.property( "a", "city" ).eq( "Cluj-Napoca" ) ) .add( AuditEntity.property( "cn", "name" ).eq( "România" ) )