HHH-15522 Add hibernate isInitialized tests on envers collections
This commit is contained in:
parent
4f9ff5cfd1
commit
c3f1762f3b
|
@ -0,0 +1,93 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
||||||
|
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||||
|
*/
|
||||||
|
package org.hibernate.orm.test.envers.integration.lazy;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import jakarta.persistence.EntityManager;
|
||||||
|
|
||||||
|
import org.hibernate.dialect.OracleDialect;
|
||||||
|
import org.hibernate.envers.query.AuditEntity;
|
||||||
|
import org.hibernate.orm.test.envers.BaseEnversJPAFunctionalTestCase;
|
||||||
|
import org.hibernate.orm.test.envers.Priority;
|
||||||
|
import org.hibernate.orm.test.envers.entities.collection.MultipleCollectionEntity;
|
||||||
|
import org.hibernate.orm.test.envers.entities.collection.MultipleCollectionRefEntity1;
|
||||||
|
import org.hibernate.orm.test.envers.entities.collection.MultipleCollectionRefEntity2;
|
||||||
|
import org.hibernate.testing.SkipForDialect;
|
||||||
|
import org.hibernate.testing.TestForIssue;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import org.hibernate.Hibernate;
|
||||||
|
import org.hibernate.envers.AuditReader;
|
||||||
|
import org.hibernate.envers.AuditReaderFactory;
|
||||||
|
import org.hibernate.testing.bytecode.enhancement.BytecodeEnhancerRunner;
|
||||||
|
import org.hibernate.testing.bytecode.enhancement.EnhancementOptions;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Fabricio Gregorio
|
||||||
|
*/
|
||||||
|
@TestForIssue(jiraKey = "HHH-15522")
|
||||||
|
@RunWith(BytecodeEnhancerRunner.class)
|
||||||
|
@EnhancementOptions(lazyLoading = true)
|
||||||
|
@SkipForDialect(value = OracleDialect.class, comment = "Oracle does not support identity key generation")
|
||||||
|
public class IsCollectionInitializedBytecodeEnhancementTest extends BaseEnversJPAFunctionalTestCase {
|
||||||
|
|
||||||
|
private Long mce1Id = null;
|
||||||
|
private Long mcre1Id = null;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Class<?>[] getAnnotatedClasses() {
|
||||||
|
return new Class<?>[]{
|
||||||
|
MultipleCollectionEntity.class, MultipleCollectionRefEntity1.class, MultipleCollectionRefEntity2.class
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Priority(10)
|
||||||
|
public void initData() {
|
||||||
|
EntityManager em = getEntityManager();
|
||||||
|
|
||||||
|
// Revision 1 - addition.
|
||||||
|
em.getTransaction().begin();
|
||||||
|
MultipleCollectionEntity mce1 = new MultipleCollectionEntity();
|
||||||
|
mce1.setText( "MultipleCollectionEntity-1-1" );
|
||||||
|
em.persist( mce1 ); // Persisting entity with empty collections.
|
||||||
|
em.getTransaction().commit();
|
||||||
|
|
||||||
|
mce1Id = mce1.getId();
|
||||||
|
|
||||||
|
// Revision 2 - update.
|
||||||
|
em.getTransaction().begin();
|
||||||
|
mce1 = em.find( MultipleCollectionEntity.class, mce1.getId() );
|
||||||
|
MultipleCollectionRefEntity1 mcre1 = new MultipleCollectionRefEntity1();
|
||||||
|
mcre1.setText( "MultipleCollectionRefEntity1-1-1" );
|
||||||
|
mcre1.setMultipleCollectionEntity( mce1 );
|
||||||
|
mce1.addRefEntity1( mcre1 );
|
||||||
|
em.persist( mcre1 );
|
||||||
|
mce1 = em.merge( mce1 );
|
||||||
|
em.getTransaction().commit();
|
||||||
|
|
||||||
|
mcre1Id = mcre1.getId();
|
||||||
|
|
||||||
|
em.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testIsInitialized() {
|
||||||
|
EntityManager em = getEntityManager();
|
||||||
|
|
||||||
|
AuditReader reader = AuditReaderFactory.get( em );
|
||||||
|
List<MultipleCollectionEntity> res = reader.createQuery().forEntitiesAtRevision( MultipleCollectionEntity.class, 1 )
|
||||||
|
.add( AuditEntity.id().eq( mce1Id ) )
|
||||||
|
.getResultList();
|
||||||
|
|
||||||
|
MultipleCollectionEntity ret = res.get( 0 );
|
||||||
|
|
||||||
|
assertEquals( Hibernate.isInitialized( ret.getRefEntities1() ), false );
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,88 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
||||||
|
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||||
|
*/
|
||||||
|
package org.hibernate.orm.test.envers.integration.lazy;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import jakarta.persistence.EntityManager;
|
||||||
|
|
||||||
|
import org.hibernate.dialect.OracleDialect;
|
||||||
|
import org.hibernate.envers.query.AuditEntity;
|
||||||
|
import org.hibernate.orm.test.envers.BaseEnversJPAFunctionalTestCase;
|
||||||
|
import org.hibernate.orm.test.envers.Priority;
|
||||||
|
import org.hibernate.orm.test.envers.entities.collection.MultipleCollectionEntity;
|
||||||
|
import org.hibernate.orm.test.envers.entities.collection.MultipleCollectionRefEntity1;
|
||||||
|
import org.hibernate.orm.test.envers.entities.collection.MultipleCollectionRefEntity2;
|
||||||
|
import org.hibernate.testing.SkipForDialect;
|
||||||
|
import org.hibernate.testing.TestForIssue;
|
||||||
|
import org.junit.Test;
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import org.hibernate.Hibernate;
|
||||||
|
import org.hibernate.envers.AuditReader;
|
||||||
|
import org.hibernate.envers.AuditReaderFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Fabricio Gregorio
|
||||||
|
*/
|
||||||
|
@TestForIssue(jiraKey = "HHH-15522")
|
||||||
|
@SkipForDialect(value = OracleDialect.class, comment = "Oracle does not support identity key generation")
|
||||||
|
public class IsCollectionInitializedTest extends BaseEnversJPAFunctionalTestCase {
|
||||||
|
|
||||||
|
private Long mce1Id = null;
|
||||||
|
private Long mcre1Id = null;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Class<?>[] getAnnotatedClasses() {
|
||||||
|
return new Class<?>[]{
|
||||||
|
MultipleCollectionEntity.class, MultipleCollectionRefEntity1.class, MultipleCollectionRefEntity2.class
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Priority(10)
|
||||||
|
public void initData() {
|
||||||
|
EntityManager em = getEntityManager();
|
||||||
|
|
||||||
|
// Revision 1 - addition.
|
||||||
|
em.getTransaction().begin();
|
||||||
|
MultipleCollectionEntity mce1 = new MultipleCollectionEntity();
|
||||||
|
mce1.setText( "MultipleCollectionEntity-1-1" );
|
||||||
|
em.persist( mce1 ); // Persisting entity with empty collections.
|
||||||
|
em.getTransaction().commit();
|
||||||
|
|
||||||
|
mce1Id = mce1.getId();
|
||||||
|
|
||||||
|
// Revision 2 - update.
|
||||||
|
em.getTransaction().begin();
|
||||||
|
mce1 = em.find( MultipleCollectionEntity.class, mce1.getId() );
|
||||||
|
MultipleCollectionRefEntity1 mcre1 = new MultipleCollectionRefEntity1();
|
||||||
|
mcre1.setText( "MultipleCollectionRefEntity1-1-1" );
|
||||||
|
mcre1.setMultipleCollectionEntity( mce1 );
|
||||||
|
mce1.addRefEntity1( mcre1 );
|
||||||
|
em.persist( mcre1 );
|
||||||
|
mce1 = em.merge( mce1 );
|
||||||
|
em.getTransaction().commit();
|
||||||
|
|
||||||
|
mcre1Id = mcre1.getId();
|
||||||
|
|
||||||
|
em.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testIsInitialized() {
|
||||||
|
EntityManager em = getEntityManager();
|
||||||
|
|
||||||
|
AuditReader reader = AuditReaderFactory.get( em );
|
||||||
|
List<MultipleCollectionEntity> res = reader.createQuery().forEntitiesAtRevision( MultipleCollectionEntity.class, 1 )
|
||||||
|
.add( AuditEntity.id().eq( mce1Id ) )
|
||||||
|
.getResultList();
|
||||||
|
|
||||||
|
MultipleCollectionEntity ret = res.get( 0 );
|
||||||
|
|
||||||
|
assertEquals( Hibernate.isInitialized( ret.getRefEntities1() ), false );
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue