@Override @SuppressWarnings({"unchecked"}) public List<Object> findEntities(Number revision) throws IllegalStateException, IllegalArgumentException { final Set<Pair<String, Class>> entityTypes = findEntityTypes( revision ); final List<Object> result = new ArrayList<>(); for ( Pair<String, Class> type : entityTypes ) { result.addAll( auditReaderImplementor.createQuery().forEntitiesModifiedAtRevision( type.getSecond(), type.getFirst(), revision ) .getResultList() ); } return result; }
@Override @SuppressWarnings({"unchecked"}) public Map<RevisionType, List<Object>> findEntitiesGroupByRevisionType(Number revision) throws IllegalStateException, IllegalArgumentException { final Set<Pair<String, Class>> entityTypes = findEntityTypes( revision ); final Map<RevisionType, List<Object>> result = new HashMap<>(); for ( RevisionType revisionType : RevisionType.values() ) { result.put( revisionType, new ArrayList<>() ); for ( Pair<String, Class> type : entityTypes ) { final List<Object> list = auditReaderImplementor.createQuery() .forEntitiesModifiedAtRevision( type.getSecond(), type.getFirst(), revision ) .add( new RevisionTypeAuditExpression( null, revisionType, "=" ) ) .getResultList(); result.get( revisionType ).addAll( list ); } } return result; }
@Override @SuppressWarnings({"unchecked"}) public List<Object> findEntities(Number revision, RevisionType revisionType) throws IllegalStateException, IllegalArgumentException { final Set<Pair<String, Class>> entityTypes = findEntityTypes( revision ); final List<Object> result = new ArrayList<>(); for ( Pair<String, Class> type : entityTypes ) { result.addAll( auditReaderImplementor.createQuery().forEntitiesModifiedAtRevision( type.getSecond(), type.getFirst(), revision ) .add( new RevisionTypeAuditExpression( null, revisionType, "=" ) ).getResultList() ); } return result; }
@Test public void testNoEntitiesModifiedAtRevision() { List result = getAuditReader().createQuery() .forEntitiesModifiedAtRevision( StrIntTestEntity.class, 5 ) .getResultList(); Assert.assertTrue( result.isEmpty() ); }
@Test public void testEntityNotModifiedAtRevision() { List result = getAuditReader().createQuery().forEntitiesModifiedAtRevision( StrIntTestEntity.class, 3 ) .add( AuditEntity.id().eq( id1 ) ).getResultList(); Assert.assertTrue( result.isEmpty() ); }
@Test @TestForIssue(jiraKey = "HHH-11558") public void testForEntitiesModifiedAtRevisionNotAuditedMultipleResults() { try { getAuditReader().createQuery() .forEntitiesModifiedAtRevision( NonAuditedEntity.class, 1 ) .getResultList(); fail( "Expected a NotAuditedException" ); } catch ( Exception e ) { assertTyping( NotAuditedException.class, e ); } }
@Test @TestForIssue(jiraKey = "HHH-11558") public void testForEntitiesModifiedAtRevisionNotAuditedSingleResult() { try { getAuditReader().createQuery() .forEntitiesModifiedAtRevision( NonAuditedEntity.class, 1 ) .setMaxResults( 1 ) .getSingleResult(); fail( "Expected a NotAuditedException" ); } catch ( Exception e ) { assertTyping( NotAuditedException.class, e ); } }
@Test public void testEntitiesRemovedAtRevision() { StrIntTestEntity site1 = new StrIntTestEntity( null, null, id1 ); List result = getAuditReader().createQuery() .forEntitiesModifiedAtRevision( StrIntTestEntity.class, 4 ) .getResultList(); RevisionType revisionType = (RevisionType) getAuditReader().createQuery().forEntitiesModifiedAtRevision( StrIntTestEntity.class, 4 ) .addProjection( AuditEntity.revisionType() ).add( AuditEntity.id().eq( id1 ) ) .getSingleResult(); Assert.assertTrue( TestTools.checkCollection( result, site1 ) ); Assert.assertEquals( revisionType, RevisionType.DEL ); }
@Test public void testEntitiesAddedAtRevision() { StrIntTestEntity site1 = new StrIntTestEntity( "a", 10, id1 ); StrIntTestEntity site2 = new StrIntTestEntity( "a", 10, id2 ); StrIntTestEntity site3 = new StrIntTestEntity( "b", 5, id3 ); List result = getAuditReader().createQuery().forEntitiesModifiedAtRevision( StrIntTestEntity.class, StrIntTestEntity.class.getName(), 1 ).getResultList(); RevisionType revisionType = (RevisionType) getAuditReader().createQuery().forEntitiesModifiedAtRevision( StrIntTestEntity.class, 1 ) .addProjection( AuditEntity.revisionType() ).add( AuditEntity.id().eq( id1 ) ) .getSingleResult(); Assert.assertTrue( TestTools.checkCollection( result, site1, site2, site3 ) ); Assert.assertEquals( revisionType, RevisionType.ADD ); }
private List getEntitiesModifiedAtRevisionUsingAssociationQueryResults(Number revision) { // Without fix HHH-11981, throw org.hibernate.QueryException - Parameter not bound : revision return getAuditReader().createQuery() .forEntitiesModifiedAtRevision( Template.class, revision ) .traverseRelation( "templateType", JoinType.INNER ) .addProjection( AuditEntity.selectEntity( false ) ) .up() .add( AuditEntity.property( "templateType" ).hasChanged() ) .getResultList(); } }
.forEntitiesModifiedAtRevision( proxySte.getClass(), 1 ) .getSingleResult(); Assert.assertEquals( originalSte, ste );
@Test public void testEntitiesChangedAtRevision() { StrIntTestEntity site1 = new StrIntTestEntity( "aBc", 10, id1 ); StrIntTestEntity site2 = new StrIntTestEntity( "a", 20, id2 ); List result = getAuditReader().createQuery() .forEntitiesModifiedAtRevision( StrIntTestEntity.class, 2 ) .getResultList(); RevisionType revisionType = (RevisionType) getAuditReader().createQuery().forEntitiesModifiedAtRevision( StrIntTestEntity.class, 2 ) .addProjection( AuditEntity.revisionType() ).add( AuditEntity.id().eq( id1 ) ) .getSingleResult(); Assert.assertTrue( TestTools.checkCollection( result, site1, site2 ) ); Assert.assertEquals( revisionType, RevisionType.MOD ); }
.get( entityManager ) .createQuery() .forEntitiesModifiedAtRevision( Customer.class, 2 ) .add( AuditEntity.id().eq( 1L ) ) .add( AuditEntity.property( "lastName" ).hasChanged() )
@Override @SuppressWarnings({"unchecked"}) public List<Object> findEntities(Number revision) throws IllegalStateException, IllegalArgumentException { final Set<Pair<String, Class>> entityTypes = findEntityTypes( revision ); final List<Object> result = new ArrayList<>(); for ( Pair<String, Class> type : entityTypes ) { result.addAll( auditReaderImplementor.createQuery() .forEntitiesModifiedAtRevision( type.getSecond(), type.getFirst(), revision ) .getResultList() ); } return result; }
@Override @SuppressWarnings({"unchecked"}) public Map<RevisionType, List<Object>> findEntitiesGroupByRevisionType(Number revision) throws IllegalStateException, IllegalArgumentException { final Set<Pair<String, Class>> entityTypes = findEntityTypes( revision ); final Map<RevisionType, List<Object>> result = new HashMap<>(); for ( RevisionType revisionType : RevisionType.values() ) { result.put( revisionType, new ArrayList<>() ); for ( Pair<String, Class> type : entityTypes ) { final List<Object> list = auditReaderImplementor.createQuery() .forEntitiesModifiedAtRevision( type.getSecond(), type.getFirst(), revision ) .add( new RevisionTypeAuditExpression( null, revisionType, "=" ) ) .getResultList(); result.get( revisionType ).addAll( list ); } } return result; }
@Override @SuppressWarnings({"unchecked"}) public List<Object> findEntities(Number revision, RevisionType revisionType) throws IllegalStateException, IllegalArgumentException { final Set<Pair<String, Class>> entityTypes = findEntityTypes( revision ); final List<Object> result = new ArrayList<>(); for ( Pair<String, Class> type : entityTypes ) { result.addAll( auditReaderImplementor.createQuery() .forEntitiesModifiedAtRevision( type.getSecond(), type.getFirst(), revision ) .add( new RevisionTypeAuditExpression( null, revisionType, "=" ) ) .getResultList() ); } return result; }
/** * It returns how many entities are modified for a specific class and number revision. */ private int howManyEntitiesChangedAtRevisionNumber(AuditReader auditReader, Class<?> clazz, Number revision) { return ( (Long) auditReader.createQuery().forEntitiesModifiedAtRevision( clazz, revision ) .addProjection( AuditEntity.id().count() ).getSingleResult() ).intValue(); }
.forEntitiesModifiedAtRevision( Person.class, 3 ).add( AuditEntity.property( "address" ).hasChanged() ) .getResultList(); assertEquals( 1, peopleWhoHasMovedHouseAtRevision3.size() );
@SuppressWarnings("unchecked") List<Address> houseNumberAddressChangedAtRevision2 = auditReader.createQuery() .forEntitiesModifiedAtRevision( Address.class, 2 ) .add( AuditEntity.property( "houseNumber" ).hasChanged() ) .add( AuditEntity.property( "flatNumber" ).hasChanged() )