@Test public void testPolymorphicQuery() { ParentEntity parentVer1 = new ParentEntity( id1, "x" ); assert getAuditReader().createQuery().forEntitiesAtRevision( ParentEntity.class, 1 ).getSingleResult() .equals( parentVer1 ); assert getAuditReader().createQuery().forEntitiesAtRevision( ChildEntity.class, 1 ) .getResultList().size() == 0; } }
@Test public void testPolymorphicQuery() { ChildEntity childVer1 = new ChildEntity( id1, "x", null ); assert getAuditReader().createQuery().forEntitiesAtRevision( ChildEntity.class, 1 ).getSingleResult() .equals( childVer1 ); assert getAuditReader().createQuery().forEntitiesAtRevision( ParentEntity.class, 1 ).getSingleResult() .equals( childVer1 ); } }
@Test public void testPolymorphicQuery() { ChildEntity childVer1 = new ChildEntity( id1, "x", 1l ); assert getAuditReader().createQuery().forEntitiesAtRevision( ChildEntity.class, 1 ).getSingleResult() .equals( childVer1 ); assert getAuditReader().createQuery().forEntitiesAtRevision( ParentEntity.class, 1 ).getSingleResult() .equals( childVer1 ); } }
@Test public void testPolymorphicQuery() { ChildEntity childVer1 = new ChildEntity( id1, "x", 1l ); assert getAuditReader().createQuery().forEntitiesAtRevision( ChildEntity.class, 1 ).getSingleResult() .equals( childVer1 ); assert getAuditReader().createQuery().forEntitiesAtRevision( ParentEntity.class, 1 ).getSingleResult() .equals( childVer1 ); } }
@Test public void testPolymorphicQuery() { EmptyChildEntity childVer1 = new EmptyChildEntity( id1, "x" ); assert getAuditReader().createQuery().forEntitiesAtRevision( EmptyChildEntity.class, 1 ).getSingleResult() .equals( childVer1 ); assert getAuditReader().createQuery().forEntitiesAtRevision( ParentEntity.class, 1 ).getSingleResult() .equals( childVer1 ); } }
@Test public void testProjectionsInEntitiesAtRevision() { assert getAuditReader().createQuery().forEntitiesAtRevision( StrIntTestEntity.class, 1 ) .getResultList().size() == 2; assert getAuditReader().createQuery().forEntitiesAtRevision( StrIntTestEntity.class, 2 ) .getResultList().size() == 1; assert (Long) getAuditReader().createQuery().forEntitiesAtRevision( StrIntTestEntity.class, 1 ) .addProjection( AuditEntity.id().count() ).getResultList().get( 0 ) == 2; assert (Long) getAuditReader().createQuery().forEntitiesAtRevision( StrIntTestEntity.class, 2 ) .addProjection( AuditEntity.id().count() ).getResultList().get( 0 ) == 1; }
@Test public void testAuditEntityInstantiation() { List result = getAuditReader().createQuery() .forEntitiesAtRevision( ProtectedConstructorEntity.class, 1 ) .getResultList(); Assert.assertEquals( Arrays.asList( testEntity ), result ); } }
@Test public void testReferencePropertyIsNotNullQuery() { CollectionRefIngEntity ver = (CollectionRefIngEntity) getAuditReader().createQuery() .forEntitiesAtRevision( CollectionRefIngEntity.class, 3 ) .add( AuditEntity.property( "reference" ).isNotNull() ) .getSingleResult(); assert ver.getId().equals( idReferenceToParentNotNull ); } }
@Test public void testAuditQueryUsingEmbeddableEquals() { final NameInfo nameInfo = new NameInfo( "John", "Doe" ); final AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision( Person.class, 1 ); query.add( AuditEntity.property( "nameInfo" ).eq( nameInfo ) ); List<?> results = query.getResultList(); assertEquals( 1, results.size() ); final Person person = (Person) results.get( 0 ); assertEquals( nameInfo, person.getNameInfo() ); }
@Test public void testCacheFindAfterEntitiesAtRevisionQuery() { IntTestEntity entFromQuery = (IntTestEntity) getAuditReader().createQuery() .forEntitiesAtRevision( IntTestEntity.class, 1 ) .getSingleResult(); IntTestEntity entFromFind = getAuditReader().find( IntTestEntity.class, id1, 1 ); assert entFromFind == entFromQuery; } }
@Test public void testAuditQueryUsingEmbeddableNotEquals() { final NameInfo nameInfo = new NameInfo( "Jane", "Doe" ); final AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision( Person.class, 1 ); query.add( AuditEntity.property( "nameInfo" ).ne( nameInfo ) ); assertEquals( 0, query.getResultList().size() ); }
@Test public void shouldFailWhenQueryOnManyToOne() { //when PlainEntity plainEntity = (PlainEntity) getAuditReader().createQuery() .forEntitiesAtRevision( PlainEntity.class, 1 ) .add( AuditEntity.relatedId( "component_manyToOneEntity" ).eq( getManyToOneEntity().getId() ) ) .getResultList().get( 0 ); //then Assert.assertEquals( getManyToOneEntity(), plainEntity.getComponent().getManyToOneEntity() ); }
@Test public void testAuditQueryUsingEmbeddableNonEqualityCheck() { try { final NameInfo nameInfo = new NameInfo( "John", "Doe" ); final AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision( Person.class, 1 ); query.add( AuditEntity.property( "nameInfo" ).le( nameInfo ) ); } catch ( Exception ex ) { assertTyping( AuditException.class, ex ); } } }
@Test public void testSimplePropertyIsNotNullQuery() { StrIntTestEntity ver = (StrIntTestEntity) getAuditReader().createQuery() .forEntitiesAtRevision( StrIntTestEntity.class, 1 ) .add( AuditEntity.property( "str1" ).isNotNull() ) .getSingleResult(); assert ver.equals( new StrIntTestEntity( "data", 2, idSimplePropertyNotNull ) ); }
@Test public void testSimplePropertyIsNullQuery() { StrIntTestEntity ver = (StrIntTestEntity) getAuditReader().createQuery() .forEntitiesAtRevision( StrIntTestEntity.class, 1 ) .add( AuditEntity.property( "str1" ).isNull() ) .getSingleResult(); assert ver.equals( new StrIntTestEntity( null, 1, idSimplePropertyNull ) ); }
@Test @TestForIssue(jiraKey = "HHH-8567") public void testIdPropertyRestriction() { StrIntTestEntity ver2 = (StrIntTestEntity) getAuditReader().createQuery() .forEntitiesAtRevision( StrIntTestEntity.class, 2 ) .add( AuditEntity.property( "id" ).eq( id2 ) ) .getSingleResult(); Assert.assertEquals( new StrIntTestEntity( "a", 20, id2 ), ver2 ); }
@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 testComparisonOfTwoPropertiesFromDifferentEntities() { AuditReader auditReader = getAuditReader(); // the car where the owner age is equal to the owner address number. Car result = (Car) auditReader.createQuery() .forEntitiesAtRevision( Car.class, 1 ) .traverseRelation( "owner", JoinType.INNER, "p" ) .traverseRelation( "address", JoinType.INNER, "a" ) .up().up().add(AuditEntity.property( "p", "age" ) .eqProperty( "a", "number" ) ).getSingleResult(); assertEquals( "Unexpected car returned", toyota.getId(), result.getId() ); }
@Test @TestForIssue(jiraKey = "HHH-8567") public void testMultipleIdPropertyRestriction() { MulIdTestEntity ver2 = (MulIdTestEntity) getAuditReader().createQuery() .forEntitiesAtRevision( MulIdTestEntity.class, 2 ) .add( AuditEntity.property( "id1" ).eq( mulId1.getId1() ) ) .add( AuditEntity.property( "id2" ).eq( mulId1.getId2() ) ) .getSingleResult(); Assert.assertEquals( new MulIdTestEntity( mulId1.getId1(), mulId1.getId2(), "data" ), ver2 ); }