44 */
55package org .hibernate .orm .test .bulkid ;
66
7- import java .io .Serializable ;
8- import java .util .Objects ;
97import jakarta .persistence .Entity ;
108import jakarta .persistence .Id ;
119import jakarta .persistence .Inheritance ;
1210import jakarta .persistence .InheritanceType ;
11+ import org .hibernate .testing .orm .junit .DomainModel ;
12+ import org .hibernate .testing .orm .junit .SessionFactory ;
13+ import org .hibernate .testing .orm .junit .SessionFactoryScope ;
14+ import org .junit .jupiter .api .AfterEach ;
15+ import org .junit .jupiter .api .BeforeEach ;
16+ import org .junit .jupiter .api .Test ;
1317
14- import org .hibernate .cfg .AvailableSettings ;
15- import org .hibernate .cfg .Configuration ;
16- import org .hibernate .query .sqm .mutation .spi .SqmMultiTableInsertStrategy ;
17- import org .hibernate .query .sqm .mutation .spi .SqmMultiTableMutationStrategy ;
18+ import java .io .Serializable ;
19+ import java .util .Objects ;
1820
19- import org .hibernate .testing .junit4 .BaseCoreFunctionalTestCase ;
20- import org .junit .Before ;
21- import org .junit .Test ;
21+ import static org .assertj .core .api .Assertions .assertThat ;
2222
23- import static org .hibernate .testing .transaction .TransactionUtil .doInHibernate ;
24- import static org .junit .Assert .assertEquals ;
25- import static org .junit .Assert .assertFalse ;
26- import static org .junit .Assert .assertTrue ;
2723
2824/**
2925 * @author Vlad Mihalcea
3026 */
31- public abstract class AbstractMutationStrategyCompositeIdTest extends BaseCoreFunctionalTestCase {
32-
33- @ Override
34- protected Class <?>[] getAnnotatedClasses () {
35- return new Class <?>[] {
36- Person .class ,
37- Doctor .class ,
38- Engineer .class
39- };
40- }
41-
42- @ Override
43- protected void configure (Configuration configuration ) {
44- super .configure ( configuration );
45- Class <? extends SqmMultiTableMutationStrategy > mutationStrategyClass = getMultiTableMutationStrategyClass ();
46- if ( mutationStrategyClass != null ) {
47- configuration .setProperty ( AvailableSettings .QUERY_MULTI_TABLE_MUTATION_STRATEGY , mutationStrategyClass );
27+ @ DomainModel (
28+ annotatedClasses = {
29+ AbstractMutationStrategyCompositeIdTest .Person .class ,
30+ AbstractMutationStrategyCompositeIdTest .Doctor .class ,
31+ AbstractMutationStrategyCompositeIdTest .Engineer .class
4832 }
49- Class <? extends SqmMultiTableInsertStrategy > insertStrategyClass = getMultiTableInsertStrategyClass ();
50- if ( insertStrategyClass != null ) {
51- configuration .setProperty ( AvailableSettings .QUERY_MULTI_TABLE_INSERT_STRATEGY , insertStrategyClass );
52- }
53- }
54-
55- protected abstract Class <? extends SqmMultiTableMutationStrategy > getMultiTableMutationStrategyClass ();
56-
57- protected abstract Class <? extends SqmMultiTableInsertStrategy > getMultiTableInsertStrategyClass ();
58-
59- @ Override
60- protected boolean isCleanupTestDataRequired () {
61- return true ;
62- }
63-
64- @ Override
65- protected boolean isCleanupTestDataUsingBulkDelete () {
66- return true ;
67- }
33+ )
34+ @ SessionFactory
35+ public abstract class AbstractMutationStrategyCompositeIdTest {
6836
69- @ Before
70- public void setUp () {
71- doInHibernate ( this :: sessionFactory , session -> {
37+ @ BeforeEach
38+ public void setUp (SessionFactoryScope scope ) {
39+ scope . inTransaction ( session -> {
7240 for ( int i = 0 ; i < entityCount (); i ++ ) {
7341 Doctor doctor = new Doctor ();
7442 doctor .setId ( i + 1 );
7543 doctor .setCompanyName ( "Red Hat USA" );
76- doctor .setEmployed ( ( i % 2 ) == 0 );
44+ doctor .setEmployed ( (i % 2 ) == 0 );
7745 session .persist ( doctor );
7846 }
7947
8048 for ( int i = 0 ; i < entityCount (); i ++ ) {
8149 Engineer engineer = new Engineer ();
8250 engineer .setId ( i + 1 + entityCount () );
8351 engineer .setCompanyName ( "Red Hat Europe" );
84- engineer .setEmployed ( ( i % 2 ) == 0 );
85- engineer .setFellow ( ( i % 2 ) == 1 );
52+ engineer .setEmployed ( (i % 2 ) == 0 );
53+ engineer .setFellow ( (i % 2 ) == 1 );
8654 session .persist ( engineer );
8755 }
88- });
56+ } );
57+ }
58+
59+ @ AfterEach
60+ public void tearDown (SessionFactoryScope scope ) {
61+ scope .getSessionFactory ().getSchemaManager ().truncateMappedObjects ();
8962 }
9063
9164 protected int entityCount () {
9265 return 4 ;
9366 }
9467
9568 @ Test
96- public void testUpdate () {
97- doInHibernate ( this :: sessionFactory , session -> {
98- int updateCount = session .createQuery ( "update Person set name = :name where employed = :employed" )
69+ public void testUpdate (SessionFactoryScope scope ) {
70+ scope . inTransaction ( session -> {
71+ int updateCount = session .createMutationQuery ( "update Person set name = :name where employed = :employed" )
9972 .setParameter ( "name" , "John Doe" )
10073 .setParameter ( "employed" , true )
10174 .executeUpdate ();
10275
103- assertEquals ( entityCount (), updateCount );
104- });
76+ assertThat ( updateCount ). isEqualTo ( entityCount () );
77+ } );
10578 }
10679
10780 @ Test
108- public void testDeleteFromPerson () {
109- doInHibernate ( this :: sessionFactory , session -> {
81+ public void testDeleteFromPerson (SessionFactoryScope scope ) {
82+ scope . inTransaction ( session -> {
11083 //tag::batch-bulk-hql-temp-table-delete-query-example[]
111- int updateCount = session .createQuery (
112- "delete from Person where employed = :employed" )
113- .setParameter ( "employed" , false )
114- .executeUpdate ();
84+ int updateCount = session .createMutationQuery (
85+ "delete from Person where employed = :employed" )
86+ .setParameter ( "employed" , false )
87+ .executeUpdate ();
11588 //end::batch-bulk-hql-temp-table-delete-query-example[]
116- assertEquals ( entityCount (), updateCount );
117- });
89+ assertThat ( updateCount ). isEqualTo ( entityCount () );
90+ } );
11891 }
11992
12093 @ Test
121- public void testDeleteFromEngineer () {
122- doInHibernate ( this :: sessionFactory , session -> {
123- int updateCount = session .createQuery ( "delete from Engineer where fellow = :fellow" )
94+ public void testDeleteFromEngineer (SessionFactoryScope scope ) {
95+ scope . inTransaction ( session -> {
96+ int updateCount = session .createMutationQuery ( "delete from Engineer where fellow = :fellow" )
12497 .setParameter ( "fellow" , true )
12598 .executeUpdate ();
126- assertEquals ( entityCount () / 2 , updateCount );
127- });
99+ assertThat ( updateCount ).isEqualTo ( entityCount () / 2 );
100+
101+ } );
128102 }
129103
130104 @ Test
131- public void testInsert () {
132- doInHibernate ( this ::sessionFactory , session -> {
133- session .createQuery ( "insert into Engineer(id, companyName, name, employed, fellow) values (0, 'Red Hat', :name, :employed, false)" )
105+ public void testInsert (SessionFactoryScope scope ) {
106+ scope .inTransaction ( session -> {
107+ session .createMutationQuery (
108+ "insert into Engineer(id, companyName, name, employed, fellow) values (0, 'Red Hat', :name, :employed, false)" )
134109 .setParameter ( "name" , "John Doe" )
135110 .setParameter ( "employed" , true )
136111 .executeUpdate ();
137112 final Engineer engineer = session .find ( Engineer .class ,
138113 new AbstractMutationStrategyCompositeIdTest_ .Person_ .Id ( 0 , "Red Hat" ) );
139- assertEquals ( "John Doe" , engineer .getName () );
140- assertTrue ( engineer .isEmployed () );
141- assertFalse ( engineer .isFellow () );
142- });
114+ assertThat ( engineer .getName () ). isEqualTo ( "John Doe" );
115+ assertThat ( engineer .isEmployed () ). isTrue ( );
116+ assertThat ( engineer .isFellow () ). isFalse ( );
117+ } );
143118 }
144119
145120 @ Test
146- public void testInsertSelect () {
147- doInHibernate ( this ::sessionFactory , session -> {
148- final int insertCount = session .createQuery ( "insert into Engineer(id, companyName, name, employed, fellow) "
149- + "select d.id + " + (entityCount () * 2 ) + ", 'Red Hat', 'John Doe', true, false from Doctor d" )
121+ public void testInsertSelect (SessionFactoryScope scope ) {
122+ scope .inTransaction ( session -> {
123+ final int insertCount = session .createMutationQuery (
124+ "insert into Engineer(id, companyName, name, employed, fellow) "
125+ + "select d.id + " + (entityCount () * 2 ) + ", 'Red Hat', 'John Doe', true, false from Doctor d" )
150126 .executeUpdate ();
151127 final Engineer engineer = session .find ( Engineer .class ,
152128 new AbstractMutationStrategyCompositeIdTest_ .Person_ .Id ( entityCount () * 2 + 1 , "Red Hat" ) );
153- assertEquals ( entityCount (), insertCount );
154- assertEquals ( "John Doe" , engineer .getName () );
155- assertTrue ( engineer .isEmployed () );
156- assertFalse ( engineer .isFellow () );
157- });
129+ assertThat ( insertCount ). isEqualTo ( entityCount () );
130+ assertThat ( engineer .getName () ). isEqualTo ( "John Doe" );
131+ assertThat ( engineer .isEmployed () ). isTrue ( );
132+ assertThat ( engineer .isFellow () ). isFalse ( );
133+ } );
158134 }
159135
160136 //tag::batch-bulk-hql-temp-table-base-class-example[]
@@ -174,7 +150,7 @@ public static class Person implements Serializable {
174150
175151 //Getters and setters are omitted for brevity
176152
177- //end::batch-bulk-hql-temp-table-base-class-example[]
153+ //end::batch-bulk-hql-temp-table-base-class-example[]
178154
179155 public Integer getId () {
180156 return id ;
@@ -213,19 +189,19 @@ public boolean equals(Object o) {
213189 if ( this == o ) {
214190 return true ;
215191 }
216- if ( !( o instanceof Person ) ) {
192+ if ( !(o instanceof Person ) ) {
217193 return false ;
218194 }
219195 Person person = (Person ) o ;
220196 return Objects .equals ( getId (), person .getId () ) &&
221- Objects .equals ( getCompanyName (), person .getCompanyName () );
197+ Objects .equals ( getCompanyName (), person .getCompanyName () );
222198 }
223199
224200 @ Override
225201 public int hashCode () {
226202 return Objects .hash ( getId (), getCompanyName () );
227203 }
228- //tag::batch-bulk-hql-temp-table-base-class-example[]
204+ //tag::batch-bulk-hql-temp-table-base-class-example[]
229205 }
230206 //end::batch-bulk-hql-temp-table-base-class-example[]
231207
@@ -241,7 +217,7 @@ public static class Engineer extends Person {
241217
242218 //Getters and setters are omitted for brevity
243219
244- //end::batch-bulk-hql-temp-table-sub-classes-example[]
220+ //end::batch-bulk-hql-temp-table-sub-classes-example[]
245221
246222 public boolean isFellow () {
247223 return fellow ;
@@ -250,7 +226,7 @@ public boolean isFellow() {
250226 public void setFellow (boolean fellow ) {
251227 this .fellow = fellow ;
252228 }
253- //tag::batch-bulk-hql-temp-table-sub-classes-example[]
229+ //tag::batch-bulk-hql-temp-table-sub-classes-example[]
254230 }
255231 //end::batch-bulk-hql-temp-table-sub-classes-example[]
256232}
0 commit comments