44 */
55package org .hibernate .orm .test .envers .integration .cache ;
66
7- import jakarta .persistence .EntityManager ;
8-
9- import org .hibernate .orm .test .envers .BaseEnversJPAFunctionalTestCase ;
10- import org .hibernate .orm .test .envers .Priority ;
7+ import org .hibernate .envers .AuditReaderFactory ;
118import org .hibernate .orm .test .envers .entities .onetomany .SetRefEdEntity ;
129import org .hibernate .orm .test .envers .entities .onetomany .SetRefIngEntity ;
10+ import org .hibernate .testing .envers .junit .EnversTest ;
11+ import org .hibernate .testing .orm .junit .BeforeClassTemplate ;
12+ import org .hibernate .testing .orm .junit .EntityManagerFactoryScope ;
13+ import org .hibernate .testing .orm .junit .Jpa ;
14+ import org .junit .jupiter .api .Test ;
1315
14- import org .junit .Test ;
16+ import static org .junit .jupiter .api .Assertions .assertEquals ;
17+ import static org .junit .jupiter .api .Assertions .assertSame ;
1518
1619/**
1720 * @author Adam Warski (adam at warski dot org)
1821 */
1922@ SuppressWarnings ({"ObjectEquality" })
20- public class OneToManyCache extends BaseEnversJPAFunctionalTestCase {
23+ @ EnversTest
24+ @ Jpa (annotatedClasses = {SetRefEdEntity .class , SetRefIngEntity .class })
25+ public class OneToManyCache {
2126 private Integer ed1_id ;
2227 private Integer ed2_id ;
2328
2429 private Integer ing1_id ;
2530 private Integer ing2_id ;
2631
27- @ Override
28- protected Class <?>[] getAnnotatedClasses () {
29- return new Class [] {SetRefEdEntity .class , SetRefIngEntity .class };
30- }
31-
32- @ Test
33- @ Priority (10 )
34- public void initData () {
35- EntityManager em = getEntityManager ();
36-
32+ @ BeforeClassTemplate
33+ public void initData (EntityManagerFactoryScope scope ) {
3734 SetRefEdEntity ed1 = new SetRefEdEntity ( 1 , "data_ed_1" );
3835 SetRefEdEntity ed2 = new SetRefEdEntity ( 2 , "data_ed_2" );
3936
4037 SetRefIngEntity ing1 = new SetRefIngEntity ( 1 , "data_ing_1" );
4138 SetRefIngEntity ing2 = new SetRefIngEntity ( 2 , "data_ing_2" );
4239
4340 // Revision 1
44- em .getTransaction ().begin ();
45-
46- em .persist ( ed1 );
47- em .persist ( ed2 );
41+ scope .inTransaction ( em -> {
42+ em .persist ( ed1 );
43+ em .persist ( ed2 );
4844
49- ing1 .setReference ( ed1 );
50- ing2 .setReference ( ed1 );
45+ ing1 .setReference ( ed1 );
46+ ing2 .setReference ( ed1 );
5147
52- em .persist ( ing1 );
53- em .persist ( ing2 );
54-
55- em .getTransaction ().commit ();
48+ em .persist ( ing1 );
49+ em .persist ( ing2 );
50+ } );
5651
5752 // Revision 2
58- em .getTransaction ().begin ();
59-
60- ing1 = em .find ( SetRefIngEntity .class , ing1 .getId () );
61- ing2 = em .find ( SetRefIngEntity .class , ing2 .getId () );
62- ed2 = em .find ( SetRefEdEntity .class , ed2 .getId () );
63-
64- ing1 .setReference ( ed2 );
65- ing2 .setReference ( ed2 );
53+ scope .inTransaction ( em -> {
54+ SetRefIngEntity ing1Ref = em .find ( SetRefIngEntity .class , ing1 .getId () );
55+ SetRefIngEntity ing2Ref = em .find ( SetRefIngEntity .class , ing2 .getId () );
56+ SetRefEdEntity ed2Ref = em .find ( SetRefEdEntity .class , ed2 .getId () );
6657
67- em .getTransaction ().commit ();
58+ ing1Ref .setReference ( ed2Ref );
59+ ing2Ref .setReference ( ed2Ref );
60+ } );
6861
6962 //
7063
@@ -76,50 +69,62 @@ public void initData() {
7669 }
7770
7871 @ Test
79- public void testCacheReferenceAccessAfterFind () {
80- SetRefEdEntity ed1_rev1 = getAuditReader ().find ( SetRefEdEntity .class , ed1_id , 1 );
81-
82- SetRefIngEntity ing1_rev1 = getAuditReader ().find ( SetRefIngEntity .class , ing1_id , 1 );
83- SetRefIngEntity ing2_rev1 = getAuditReader ().find ( SetRefIngEntity .class , ing2_id , 1 );
84-
85- // It should be exactly the same object
86- assert ing1_rev1 .getReference () == ed1_rev1 ;
87- assert ing2_rev1 .getReference () == ed1_rev1 ;
72+ public void testCacheReferenceAccessAfterFind (EntityManagerFactoryScope scope ) {
73+ scope .inEntityManager ( em -> {
74+ final var auditReader = AuditReaderFactory .get ( em );
75+ SetRefEdEntity ed1_rev1 = auditReader .find ( SetRefEdEntity .class , ed1_id , 1 );
76+
77+ SetRefIngEntity ing1_rev1 = auditReader .find ( SetRefIngEntity .class , ing1_id , 1 );
78+ SetRefIngEntity ing2_rev1 = auditReader .find ( SetRefIngEntity .class , ing2_id , 1 );
79+
80+ // It should be exactly the same object
81+ assertSame ( ed1_rev1 , ing1_rev1 .getReference () );
82+ assertSame ( ed1_rev1 , ing2_rev1 .getReference () );
83+ } );
8884 }
8985
9086 @ Test
91- public void testCacheReferenceAccessAfterCollectionAccessRev1 () {
92- SetRefEdEntity ed1_rev1 = getAuditReader ().find ( SetRefEdEntity .class , ed1_id , 1 );
93-
94- // It should be exactly the same object
95- assert ed1_rev1 .getReffering ().size () == 2 ;
96- for ( SetRefIngEntity setRefIngEntity : ed1_rev1 .getReffering () ) {
97- assert setRefIngEntity .getReference () == ed1_rev1 ;
98- }
87+ public void testCacheReferenceAccessAfterCollectionAccessRev1 (EntityManagerFactoryScope scope ) {
88+ scope .inEntityManager ( em -> {
89+ final var auditReader = AuditReaderFactory .get ( em );
90+ SetRefEdEntity ed1_rev1 = auditReader .find ( SetRefEdEntity .class , ed1_id , 1 );
91+
92+ // It should be exactly the same object
93+ assertEquals ( 2 , ed1_rev1 .getReffering ().size () );
94+ for ( SetRefIngEntity setRefIngEntity : ed1_rev1 .getReffering () ) {
95+ assertSame ( ed1_rev1 , setRefIngEntity .getReference () );
96+ }
97+ } );
9998 }
10099
101100 @ Test
102- public void testCacheReferenceAccessAfterCollectionAccessRev2 () {
103- SetRefEdEntity ed2_rev2 = getAuditReader ().find ( SetRefEdEntity .class , ed2_id , 2 );
104-
105- assert ed2_rev2 .getReffering ().size () == 2 ;
106- for ( SetRefIngEntity setRefIngEntity : ed2_rev2 .getReffering () ) {
107- assert setRefIngEntity .getReference () == ed2_rev2 ;
108- }
101+ public void testCacheReferenceAccessAfterCollectionAccessRev2 (EntityManagerFactoryScope scope ) {
102+ scope .inEntityManager ( em -> {
103+ final var auditReader = AuditReaderFactory .get ( em );
104+ SetRefEdEntity ed2_rev2 = auditReader .find ( SetRefEdEntity .class , ed2_id , 2 );
105+
106+ assertEquals ( 2 , ed2_rev2 .getReffering ().size () );
107+ for ( SetRefIngEntity setRefIngEntity : ed2_rev2 .getReffering () ) {
108+ assertSame ( ed2_rev2 , setRefIngEntity .getReference () );
109+ }
110+ } );
109111 }
110112
111113 @ Test
112- public void testCacheFindAfterCollectionAccessRev1 () {
113- SetRefEdEntity ed1_rev1 = getAuditReader ().find ( SetRefEdEntity .class , ed1_id , 1 );
114+ public void testCacheFindAfterCollectionAccessRev1 (EntityManagerFactoryScope scope ) {
115+ scope .inEntityManager ( em -> {
116+ final var auditReader = AuditReaderFactory .get ( em );
117+ SetRefEdEntity ed1_rev1 = auditReader .find ( SetRefEdEntity .class , ed1_id , 1 );
114118
115- // Reading the collection
116- assert ed1_rev1 .getReffering ().size () == 2 ;
119+ // Reading the collection
120+ assertEquals ( 2 , ed1_rev1 .getReffering ().size () ) ;
117121
118- SetRefIngEntity ing1_rev1 = getAuditReader () .find ( SetRefIngEntity .class , ing1_id , 1 );
119- SetRefIngEntity ing2_rev1 = getAuditReader () .find ( SetRefIngEntity .class , ing2_id , 1 );
122+ SetRefIngEntity ing1_rev1 = auditReader .find ( SetRefIngEntity .class , ing1_id , 1 );
123+ SetRefIngEntity ing2_rev1 = auditReader .find ( SetRefIngEntity .class , ing2_id , 1 );
120124
121- for ( SetRefIngEntity setRefIngEntity : ed1_rev1 .getReffering () ) {
122- assert setRefIngEntity == ing1_rev1 || setRefIngEntity == ing2_rev1 ;
123- }
125+ for ( SetRefIngEntity setRefIngEntity : ed1_rev1 .getReffering () ) {
126+ assertSame ( true , setRefIngEntity == ing1_rev1 || setRefIngEntity == ing2_rev1 );
127+ }
128+ } );
124129 }
125130}
0 commit comments