44 */
55package org .hibernate .orm .test .annotations .onetomany ;
66
7- import java .util .Arrays ;
8- import java .util .Iterator ;
9- import java .util .List ;
10-
117import jakarta .persistence .criteria .CriteriaBuilder ;
128import jakarta .persistence .criteria .CriteriaQuery ;
139import jakarta .persistence .criteria .Nulls ;
1410import jakarta .persistence .criteria .Root ;
15-
16- import org .junit .Assert ;
17- import org .junit .Test ;
18-
1911import org .hibernate .cfg .AvailableSettings ;
20- import org .hibernate .cfg .Configuration ;
2112import org .hibernate .dialect .H2Dialect ;
22-
23- import org .hibernate .testing .RequiresDialect ;
13+ import org .hibernate .testing .orm .junit .DomainModel ;
2414import org .hibernate .testing .orm .junit .JiraKey ;
25- import org .hibernate .testing .junit4 .BaseCoreFunctionalTestCase ;
15+ import org .hibernate .testing .orm .junit .RequiresDialect ;
16+ import org .hibernate .testing .orm .junit .ServiceRegistry ;
17+ import org .hibernate .testing .orm .junit .SessionFactory ;
18+ import org .hibernate .testing .orm .junit .SessionFactoryScope ;
19+ import org .hibernate .testing .orm .junit .SettingProvider ;
20+ import org .junit .jupiter .api .Test ;
21+
22+ import java .util .Arrays ;
23+ import java .util .Iterator ;
24+ import java .util .List ;
25+
26+ import static org .assertj .core .api .Assertions .assertThat ;
27+
2628
2729/**
2830 * @author Lukasz Antoniak
2931 */
3032@ JiraKey (value = "HHH-465" )
3133@ RequiresDialect (value = H2Dialect .class ,
3234 comment = "By default H2 places NULL values first, so testing 'NULLS LAST' expression." )
33- public class DefaultNullOrderingTest extends BaseCoreFunctionalTestCase {
34- @ Override
35- protected void configure (Configuration configuration ) {
36- configuration .setProperty ( AvailableSettings .DEFAULT_NULL_ORDERING , Nulls .LAST );
37- }
38-
39- @ Override
40- protected Class [] getAnnotatedClasses () {
41- return new Class [] { Monkey .class , Troop .class , Soldier .class };
35+ @ DomainModel (
36+ annotatedClasses = {
37+ Monkey .class ,
38+ Troop .class ,
39+ Soldier .class
40+ }
41+ )
42+ @ SessionFactory
43+ @ ServiceRegistry (
44+ settingProviders = @ SettingProvider (
45+ settingName = AvailableSettings .DEFAULT_NULL_ORDERING ,
46+ provider = DefaultNullOrderingTest .NullOrderingProvider .class )
47+ )
48+ public class DefaultNullOrderingTest {
49+
50+ public static class NullOrderingProvider implements SettingProvider .Provider <Nulls > {
51+
52+ @ Override
53+ public Nulls getSetting () {
54+ return Nulls .LAST ;
55+ }
4256 }
4357
4458 @ Test
45- public void testHqlDefaultNullOrdering () {
46- inSession ( session -> {
59+ public void testHqlDefaultNullOrdering (SessionFactoryScope scope ) {
60+ scope . inSession ( session -> {
4761// Populating database with test data.
4862 try {
4963 session .getTransaction ().begin ();
@@ -56,9 +70,9 @@ public void testHqlDefaultNullOrdering() {
5670 session .getTransaction ().commit ();
5771
5872 session .getTransaction ().begin ();
59- List <Zoo > orderedResults = ( List < Zoo >) session .createQuery ( "from Monkey m order by m.name" )
73+ List <Monkey > orderedResults = session .createQuery ( "from Monkey m order by m.name" , Monkey . class )
6074 .list (); // Should order by NULLS LAST.
61- Assert . assertEquals ( Arrays .asList ( monkey2 , monkey1 ), orderedResults );
75+ assertThat ( orderedResults ). isEqualTo ( Arrays .asList ( monkey2 , monkey1 ) );
6276 session .getTransaction ().commit ();
6377
6478 session .clear ();
@@ -69,18 +83,17 @@ public void testHqlDefaultNullOrdering() {
6983 session .remove ( monkey2 );
7084 session .getTransaction ().commit ();
7185 }
72- catch ( Exception e ) {
86+ finally {
7387 if ( session .getTransaction ().isActive () ) {
7488 session .getTransaction ().rollback ();
7589 }
76- throw e ;
7790 }
7891 } );
7992 }
8093
8194 @ Test
82- public void testAnnotationsDefaultNullOrdering () {
83- inSession (
95+ public void testAnnotationsDefaultNullOrdering (SessionFactoryScope scope ) {
96+ scope . inSession (
8497 session -> {
8598 try {
8699 // Populating database with test data.
@@ -99,10 +112,10 @@ public void testAnnotationsDefaultNullOrdering() {
99112 session .clear ();
100113
101114 session .getTransaction ().begin ();
102- troop = ( Troop ) session .get ( Troop .class , troop .getId () );
115+ troop = session .find ( Troop .class , troop .getId () );
103116 Iterator <Soldier > iterator = troop .getSoldiers ().iterator (); // Should order by NULLS LAST.
104- Assert . assertEquals ( ranger . getName (), iterator . next () .getName () );
105- Assert . assertNull ( iterator .next ().getName () );
117+ assertThat ( iterator . next (). getName () ). isEqualTo ( ranger .getName () );
118+ assertThat ( iterator .next ().getName () ). isNull ( );
106119 session .getTransaction ().commit ();
107120
108121 session .clear ();
@@ -112,21 +125,20 @@ public void testAnnotationsDefaultNullOrdering() {
112125 session .remove ( troop );
113126 session .getTransaction ().commit ();
114127 }
115- catch ( Exception e ) {
128+ finally {
116129 if ( session .getTransaction ().isActive () ) {
117130 session .getTransaction ().rollback ();
118131 }
119- throw e ;
120132 }
121133 }
122134 );
123135 }
124136
125137 @ Test
126- public void testCriteriaDefaultNullOrdering () {
127- inSession (
138+ public void testCriteriaDefaultNullOrdering (SessionFactoryScope scope ) {
139+ scope . inSession (
128140 session -> {
129- try {
141+ try {
130142 // Populating database with test data.
131143 session .getTransaction ().begin ();
132144 Monkey monkey1 = new Monkey ();
@@ -143,7 +155,8 @@ public void testCriteriaDefaultNullOrdering() {
143155 Root <Monkey > root = criteria .from ( Monkey .class );
144156 criteria .orderBy ( criteriaBuilder .asc ( root .get ( "name" ) ) );
145157
146- Assert .assertEquals ( Arrays .asList ( monkey2 , monkey1 ), session .createQuery ( criteria ).list () );
158+ assertThat ( session .createQuery ( criteria ).list () )
159+ .isEqualTo ( Arrays .asList ( monkey2 , monkey1 ) );
147160
148161// Criteria criteria = session.createCriteria( Monkey.class );
149162// criteria.addOrder( org.hibernate.criterion.Order.asc( "name" ) ); // Should order by NULLS LAST.
@@ -158,11 +171,10 @@ public void testCriteriaDefaultNullOrdering() {
158171 session .remove ( monkey2 );
159172 session .getTransaction ().commit ();
160173 }
161- catch ( Exception e ) {
174+ finally {
162175 if ( session .getTransaction ().isActive () ) {
163176 session .getTransaction ().rollback ();
164177 }
165- throw e ;
166178 }
167179 }
168180 );
0 commit comments