Skip to content

Commit e218b8f

Browse files
fgsofisyrodiere
authored andcommitted
HHH-15522 Add hibernate isInitialized tests on envers collections
1 parent 9bd8a95 commit e218b8f

File tree

2 files changed

+181
-0
lines changed

2 files changed

+181
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
/*
2+
* Hibernate, Relational Persistence for Idiomatic Java
3+
*
4+
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
5+
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
6+
*/
7+
package org.hibernate.orm.test.envers.integration.lazy;
8+
9+
import java.util.List;
10+
import javax.persistence.EntityManager;
11+
12+
import org.hibernate.dialect.OracleDialect;
13+
import org.hibernate.envers.query.AuditEntity;
14+
import org.hibernate.envers.test.BaseEnversJPAFunctionalTestCase;
15+
import org.hibernate.envers.test.Priority;
16+
import org.hibernate.envers.test.entities.collection.MultipleCollectionEntity;
17+
import org.hibernate.envers.test.entities.collection.MultipleCollectionRefEntity1;
18+
import org.hibernate.envers.test.entities.collection.MultipleCollectionRefEntity2;
19+
import org.hibernate.testing.SkipForDialect;
20+
import org.hibernate.testing.TestForIssue;
21+
import org.junit.Test;
22+
import org.junit.runner.RunWith;
23+
import static org.junit.Assert.assertEquals;
24+
import org.hibernate.Hibernate;
25+
import org.hibernate.envers.AuditReader;
26+
import org.hibernate.envers.AuditReaderFactory;
27+
import org.hibernate.testing.bytecode.enhancement.BytecodeEnhancerRunner;
28+
import org.hibernate.testing.bytecode.enhancement.EnhancementOptions;
29+
30+
/**
31+
* @author Fabricio Gregorio
32+
*/
33+
@TestForIssue(jiraKey = "HHH-15522")
34+
@RunWith(BytecodeEnhancerRunner.class)
35+
@EnhancementOptions(lazyLoading = true)
36+
@SkipForDialect(value = OracleDialect.class, comment = "Oracle does not support identity key generation")
37+
public class IsCollectionInitializedBytecodeEnhancementTest extends BaseEnversJPAFunctionalTestCase {
38+
39+
private Long mce1Id = null;
40+
private Long mcre1Id = null;
41+
42+
@Override
43+
protected Class<?>[] getAnnotatedClasses() {
44+
return new Class<?>[]{
45+
MultipleCollectionEntity.class, MultipleCollectionRefEntity1.class, MultipleCollectionRefEntity2.class
46+
};
47+
}
48+
49+
@Test
50+
@Priority(10)
51+
public void initData() {
52+
EntityManager em = getEntityManager();
53+
54+
// Revision 1 - addition.
55+
em.getTransaction().begin();
56+
MultipleCollectionEntity mce1 = new MultipleCollectionEntity();
57+
mce1.setText( "MultipleCollectionEntity-1-1" );
58+
em.persist( mce1 ); // Persisting entity with empty collections.
59+
em.getTransaction().commit();
60+
61+
mce1Id = mce1.getId();
62+
63+
// Revision 2 - update.
64+
em.getTransaction().begin();
65+
mce1 = em.find( MultipleCollectionEntity.class, mce1.getId() );
66+
MultipleCollectionRefEntity1 mcre1 = new MultipleCollectionRefEntity1();
67+
mcre1.setText( "MultipleCollectionRefEntity1-1-1" );
68+
mcre1.setMultipleCollectionEntity( mce1 );
69+
mce1.addRefEntity1( mcre1 );
70+
em.persist( mcre1 );
71+
mce1 = em.merge( mce1 );
72+
em.getTransaction().commit();
73+
74+
mcre1Id = mcre1.getId();
75+
76+
em.close();
77+
}
78+
79+
@Test
80+
public void testIsInitialized() {
81+
EntityManager em = getEntityManager();
82+
83+
AuditReader reader = AuditReaderFactory.get( em );
84+
List<MultipleCollectionEntity> res = reader.createQuery().forEntitiesAtRevision( MultipleCollectionEntity.class, 1 )
85+
.add( AuditEntity.id().eq( mce1Id ) )
86+
.getResultList();
87+
88+
MultipleCollectionEntity ret = res.get( 0 );
89+
90+
assertEquals( Hibernate.isInitialized( ret.getRefEntities1() ), false );
91+
92+
}
93+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
/*
2+
* Hibernate, Relational Persistence for Idiomatic Java
3+
*
4+
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
5+
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
6+
*/
7+
package org.hibernate.orm.test.envers.integration.lazy;
8+
9+
import java.util.List;
10+
import javax.persistence.EntityManager;
11+
12+
import org.hibernate.dialect.OracleDialect;
13+
import org.hibernate.envers.query.AuditEntity;
14+
import org.hibernate.envers.test.BaseEnversJPAFunctionalTestCase;
15+
import org.hibernate.envers.test.Priority;
16+
import org.hibernate.envers.test.entities.collection.MultipleCollectionEntity;
17+
import org.hibernate.envers.test.entities.collection.MultipleCollectionRefEntity1;
18+
import org.hibernate.envers.test.entities.collection.MultipleCollectionRefEntity2;
19+
import org.hibernate.testing.SkipForDialect;
20+
import org.hibernate.testing.TestForIssue;
21+
import org.junit.Test;
22+
import static org.junit.Assert.assertEquals;
23+
import org.hibernate.Hibernate;
24+
import org.hibernate.envers.AuditReader;
25+
import org.hibernate.envers.AuditReaderFactory;
26+
27+
/**
28+
* @author Fabricio Gregorio
29+
*/
30+
@TestForIssue(jiraKey = "HHH-15522")
31+
@SkipForDialect(value = OracleDialect.class, comment = "Oracle does not support identity key generation")
32+
public class IsCollectionInitializedTest extends BaseEnversJPAFunctionalTestCase {
33+
34+
private Long mce1Id = null;
35+
private Long mcre1Id = null;
36+
37+
@Override
38+
protected Class<?>[] getAnnotatedClasses() {
39+
return new Class<?>[]{
40+
MultipleCollectionEntity.class, MultipleCollectionRefEntity1.class, MultipleCollectionRefEntity2.class
41+
};
42+
}
43+
44+
@Test
45+
@Priority(10)
46+
public void initData() {
47+
EntityManager em = getEntityManager();
48+
49+
// Revision 1 - addition.
50+
em.getTransaction().begin();
51+
MultipleCollectionEntity mce1 = new MultipleCollectionEntity();
52+
mce1.setText( "MultipleCollectionEntity-1-1" );
53+
em.persist( mce1 ); // Persisting entity with empty collections.
54+
em.getTransaction().commit();
55+
56+
mce1Id = mce1.getId();
57+
58+
// Revision 2 - update.
59+
em.getTransaction().begin();
60+
mce1 = em.find( MultipleCollectionEntity.class, mce1.getId() );
61+
MultipleCollectionRefEntity1 mcre1 = new MultipleCollectionRefEntity1();
62+
mcre1.setText( "MultipleCollectionRefEntity1-1-1" );
63+
mcre1.setMultipleCollectionEntity( mce1 );
64+
mce1.addRefEntity1( mcre1 );
65+
em.persist( mcre1 );
66+
mce1 = em.merge( mce1 );
67+
em.getTransaction().commit();
68+
69+
mcre1Id = mcre1.getId();
70+
71+
em.close();
72+
}
73+
74+
@Test
75+
public void testIsInitialized() {
76+
EntityManager em = getEntityManager();
77+
78+
AuditReader reader = AuditReaderFactory.get( em );
79+
List<MultipleCollectionEntity> res = reader.createQuery().forEntitiesAtRevision( MultipleCollectionEntity.class, 1 )
80+
.add( AuditEntity.id().eq( mce1Id ) )
81+
.getResultList();
82+
83+
MultipleCollectionEntity ret = res.get( 0 );
84+
85+
assertEquals( Hibernate.isInitialized( ret.getRefEntities1() ), false );
86+
87+
}
88+
}

0 commit comments

Comments
 (0)