44 */
55package org .hibernate .orm .test .where .annotations ;
66
7- import java .util .Arrays ;
8- import java .util .HashSet ;
9- import java .util .Set ;
107import jakarta .persistence .Entity ;
118import jakarta .persistence .FetchType ;
129import jakarta .persistence .GeneratedValue ;
1613import jakarta .persistence .ManyToMany ;
1714import jakarta .persistence .OneToMany ;
1815import jakarta .persistence .Table ;
19-
2016import org .hibernate .annotations .SQLJoinTableRestriction ;
2117import org .hibernate .annotations .SQLRestriction ;
22-
18+ import org . hibernate . testing . orm . junit . DomainModel ;
2319import org .hibernate .testing .orm .junit .JiraKey ;
24- import org .hibernate .testing .junit4 .BaseNonConfigCoreFunctionalTestCase ;
25- import org .junit .Test ;
20+ import org .hibernate .testing .orm .junit .SessionFactory ;
21+ import org .hibernate .testing .orm .junit .SessionFactoryScope ;
22+ import org .junit .jupiter .api .AfterEach ;
23+ import org .junit .jupiter .api .Test ;
24+
25+ import java .util .Arrays ;
26+ import java .util .HashSet ;
27+ import java .util .Set ;
2628
27- import static org .hibernate .testing .transaction .TransactionUtil .doInHibernate ;
2829import static org .junit .Assert .assertEquals ;
2930import static org .junit .Assert .assertNotNull ;
3031import static org .junit .Assert .assertNull ;
3637 *
3738 * @author Gail Badner
3839 */
39- public class EagerToManyWhereTest extends BaseNonConfigCoreFunctionalTestCase {
40-
41- @ Override
42- protected Class [] getAnnotatedClasses () {
43- return new Class [] { Product .class , Category .class };
40+ @ SuppressWarnings ("JUnitMalformedDeclaration" )
41+ @ DomainModel (annotatedClasses = { EagerToManyWhereTest .Product .class , EagerToManyWhereTest .Category .class })
42+ @ SessionFactory
43+ public class EagerToManyWhereTest {
44+ @ AfterEach
45+ void dropTestData (SessionFactoryScope factoryScope ) {
46+ factoryScope .dropData ();
4447 }
4548
4649 @ Test
4750 @ JiraKey ( value = "HHH-13011" )
48- public void testAssociatedWhereClause () {
49-
50- Product product = new Product ();
51- Category flowers = new Category ();
51+ public void testAssociatedWhereClause (SessionFactoryScope factoryScope ) {
52+ var product = new Product ();
53+ var flowers = new Category ();
5254 flowers .id = 1 ;
5355 flowers .name = "flowers" ;
5456 flowers .description = "FLOWERS" ;
@@ -57,7 +59,7 @@ public void testAssociatedWhereClause() {
5759 product .categoriesManyToMany .add ( flowers );
5860 product .categoriesWithDescManyToMany .add ( flowers );
5961 product .categoriesWithDescIdLt4ManyToMany .add ( flowers );
60- Category vegetables = new Category ();
62+ var vegetables = new Category ();
6163 vegetables .id = 2 ;
6264 vegetables .name = "vegetables" ;
6365 vegetables .description = "VEGETABLES" ;
@@ -66,7 +68,7 @@ public void testAssociatedWhereClause() {
6668 product .categoriesManyToMany .add ( vegetables );
6769 product .categoriesWithDescManyToMany .add ( vegetables );
6870 product .categoriesWithDescIdLt4ManyToMany .add ( vegetables );
69- Category dogs = new Category ();
71+ var dogs = new Category ();
7072 dogs .id = 3 ;
7173 dogs .name = "dogs" ;
7274 dogs .description = null ;
@@ -75,7 +77,7 @@ public void testAssociatedWhereClause() {
7577 product .categoriesManyToMany .add ( dogs );
7678 product .categoriesWithDescManyToMany .add ( dogs );
7779 product .categoriesWithDescIdLt4ManyToMany .add ( dogs );
78- Category building = new Category ();
80+ var building = new Category ();
7981 building .id = 4 ;
8082 building .name = "building" ;
8183 building .description = "BUILDING" ;
@@ -85,69 +87,54 @@ public void testAssociatedWhereClause() {
8587 product .categoriesWithDescManyToMany .add ( building );
8688 product .categoriesWithDescIdLt4ManyToMany .add ( building );
8789
88- doInHibernate (
89- this ::sessionFactory ,
90- session -> {
91- session .persist ( flowers );
92- session .persist ( vegetables );
93- session .persist ( dogs );
94- session .persist ( building );
95- session .persist ( product );
96- }
97- );
98-
99- doInHibernate (
100- this ::sessionFactory ,
101- session -> {
102- Product p = session .get ( Product .class , product .id );
103- assertNotNull ( p );
104- assertEquals ( 4 , p .categoriesOneToMany .size () );
105- checkIds ( p .categoriesOneToMany , new Integer [] { 1 , 2 , 3 , 4 } );
106- assertEquals ( 3 , p .categoriesWithDescOneToMany .size () );
107- checkIds ( p .categoriesWithDescOneToMany , new Integer [] { 1 , 2 , 4 } );
108- assertEquals ( 4 , p .categoriesManyToMany .size () );
109- checkIds ( p .categoriesManyToMany , new Integer [] { 1 , 2 , 3 , 4 } );
110- assertEquals ( 3 , p .categoriesWithDescManyToMany .size () );
111- checkIds ( p .categoriesWithDescManyToMany , new Integer [] { 1 , 2 , 4 } );
112- assertEquals ( 2 , p .categoriesWithDescIdLt4ManyToMany .size () );
113- checkIds ( p .categoriesWithDescIdLt4ManyToMany , new Integer [] { 1 , 2 } );
114- }
115- );
116-
117- doInHibernate (
118- this ::sessionFactory ,
119- session -> {
120- Category c = session .get ( Category .class , flowers .id );
121- assertNotNull ( c );
122- c .inactive = 1 ;
123- }
124- );
125-
126- doInHibernate (
127- this ::sessionFactory ,
128- session -> {
129- Category c = session .get ( Category .class , flowers .id );
130- assertNull ( c );
131- }
132- );
133-
134- doInHibernate (
135- this ::sessionFactory ,
136- session -> {
137- Product p = session .get ( Product .class , product .id );
138- assertNotNull ( p );
139- assertEquals ( 3 , p .categoriesOneToMany .size () );
140- checkIds ( p .categoriesOneToMany , new Integer [] { 2 , 3 , 4 } );
141- assertEquals ( 2 , p .categoriesWithDescOneToMany .size () );
142- checkIds ( p .categoriesWithDescOneToMany , new Integer [] { 2 , 4 } );
143- assertEquals ( 3 , p .categoriesManyToMany .size () );
144- checkIds ( p .categoriesManyToMany , new Integer [] { 2 , 3 , 4 } );
145- assertEquals ( 2 , p .categoriesWithDescManyToMany .size () );
146- checkIds ( p .categoriesWithDescManyToMany , new Integer [] { 2 , 4 } );
147- assertEquals ( 1 , p .categoriesWithDescIdLt4ManyToMany .size () );
148- checkIds ( p .categoriesWithDescIdLt4ManyToMany , new Integer [] { 2 } );
149- }
150- );
90+ factoryScope .inTransaction ( (session ) -> {
91+ session .persist ( flowers );
92+ session .persist ( vegetables );
93+ session .persist ( dogs );
94+ session .persist ( building );
95+ session .persist ( product );
96+ } );
97+
98+ factoryScope .inTransaction ( (session ) -> {
99+ var p = session .find ( Product .class , product .id );
100+ assertNotNull ( p );
101+ assertEquals ( 4 , p .categoriesOneToMany .size () );
102+ checkIds ( p .categoriesOneToMany , new Integer [] { 1 , 2 , 3 , 4 } );
103+ assertEquals ( 3 , p .categoriesWithDescOneToMany .size () );
104+ checkIds ( p .categoriesWithDescOneToMany , new Integer [] { 1 , 2 , 4 } );
105+ assertEquals ( 4 , p .categoriesManyToMany .size () );
106+ checkIds ( p .categoriesManyToMany , new Integer [] { 1 , 2 , 3 , 4 } );
107+ assertEquals ( 3 , p .categoriesWithDescManyToMany .size () );
108+ checkIds ( p .categoriesWithDescManyToMany , new Integer [] { 1 , 2 , 4 } );
109+ assertEquals ( 2 , p .categoriesWithDescIdLt4ManyToMany .size () );
110+ checkIds ( p .categoriesWithDescIdLt4ManyToMany , new Integer [] { 1 , 2 } );
111+ } );
112+
113+ factoryScope .inTransaction ( (session ) -> {
114+ var c = session .find ( Category .class , flowers .id );
115+ assertNotNull ( c );
116+ c .inactive = 1 ;
117+ } );
118+
119+ factoryScope .inTransaction ( (session ) -> {
120+ var c = session .find ( Category .class , flowers .id );
121+ assertNull ( c );
122+ } );
123+
124+ factoryScope .inTransaction ( (session ) -> {
125+ var p = session .find ( Product .class , product .id );
126+ assertNotNull ( p );
127+ assertEquals ( 3 , p .categoriesOneToMany .size () );
128+ checkIds ( p .categoriesOneToMany , new Integer [] { 2 , 3 , 4 } );
129+ assertEquals ( 2 , p .categoriesWithDescOneToMany .size () );
130+ checkIds ( p .categoriesWithDescOneToMany , new Integer [] { 2 , 4 } );
131+ assertEquals ( 3 , p .categoriesManyToMany .size () );
132+ checkIds ( p .categoriesManyToMany , new Integer [] { 2 , 3 , 4 } );
133+ assertEquals ( 2 , p .categoriesWithDescManyToMany .size () );
134+ checkIds ( p .categoriesWithDescManyToMany , new Integer [] { 2 , 4 } );
135+ assertEquals ( 1 , p .categoriesWithDescIdLt4ManyToMany .size () );
136+ checkIds ( p .categoriesWithDescIdLt4ManyToMany , new Integer [] { 2 } );
137+ } );
151138 }
152139
153140 private void checkIds (Set <Category > categories , Integer [] expectedIds ) {
0 commit comments