Skip to content

Commit ccc451e

Browse files
committed
various cleanups and warning suppressions in NodeBuilder/SQM stuff
- make construct() and array() accept more general List type - deprecate some obsolete/unused tuple() operations with ugly signature
1 parent c4f5982 commit ccc451e

File tree

7 files changed

+108
-110
lines changed

7 files changed

+108
-110
lines changed

hibernate-core/src/main/java/org/hibernate/query/criteria/HibernateCriteriaBuilder.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,7 @@ default <T> JpaSubQuery<T> except(Subquery<? extends T> query1, Subquery<?>... q
382382

383383
@Override
384384
<Y> JpaCompoundSelection<Y> construct(Class<Y> resultClass, Selection<?>... selections);
385-
<Y> JpaCompoundSelection<Y> construct(Class<Y> resultClass, List<? extends JpaSelection<?>> arguments);
385+
<Y> JpaCompoundSelection<Y> construct(Class<Y> resultClass, List<? extends Selection<?>> arguments);
386386

387387
@Override
388388
JpaCompoundSelection<Tuple> tuple(Selection<?>... selections);
@@ -393,7 +393,7 @@ default <T> JpaSubQuery<T> except(Subquery<? extends T> query1, Subquery<?>... q
393393
JpaCompoundSelection<Object[]> array(List<Selection<?>> selections);
394394

395395
<Y> JpaCompoundSelection<Y> array(Class<Y> resultClass, Selection<?>... selections);
396-
<Y> JpaCompoundSelection<Y> array(Class<Y> resultClass, List<? extends JpaSelection<?>> selections);
396+
<Y> JpaCompoundSelection<Y> array(Class<Y> resultClass, List<? extends Selection<?>> selections);
397397

398398

399399
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -1072,15 +1072,15 @@ <Y extends Comparable<? super Y>> JpaPredicate between(
10721072
/**
10731073
* @deprecated Use {@linkplain #sort(JpaExpression, SortDirection, Nulls)} instead
10741074
*/
1075-
@Deprecated
1075+
@Deprecated(since = "7")
10761076
default JpaOrder sort(JpaExpression<?> sortExpression, SortDirection sortOrder, NullPrecedence nullPrecedence) {
10771077
return sort( sortExpression, sortOrder, nullPrecedence.getJpaValue() );
10781078
}
10791079

10801080
/**
10811081
* @deprecated Use {@linkplain #sort(JpaExpression, SortDirection, Nulls, boolean)} instead
10821082
*/
1083-
@Deprecated
1083+
@Deprecated(since = "7")
10841084
default JpaOrder sort(
10851085
JpaExpression<?> sortExpression,
10861086
SortDirection sortOrder,

hibernate-core/src/main/java/org/hibernate/query/criteria/spi/HibernateCriteriaBuilderDelegate.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,7 @@ public <Y> JpaCompoundSelection<Y> construct(Class<Y> resultClass, Selection<?>.
420420
}
421421

422422
@Override
423-
public <Y> JpaCompoundSelection<Y> construct(Class<Y> resultClass, List<? extends JpaSelection<?>> arguments) {
423+
public <Y> JpaCompoundSelection<Y> construct(Class<Y> resultClass, List<? extends Selection<?>> arguments) {
424424
return criteriaBuilder.construct( resultClass, arguments );
425425
}
426426

@@ -450,7 +450,7 @@ public <Y> JpaCompoundSelection<Y> array(Class<Y> resultClass, Selection<?>... s
450450
}
451451

452452
@Override
453-
public <Y> JpaCompoundSelection<Y> array(Class<Y> resultClass, List<? extends JpaSelection<?>> selections) {
453+
public <Y> JpaCompoundSelection<Y> array(Class<Y> resultClass, List<? extends Selection<?>> selections) {
454454
return criteriaBuilder.array( resultClass, selections );
455455
}
456456

@@ -1290,12 +1290,12 @@ public JpaPredicate exists(Subquery<?> subquery) {
12901290
return criteriaBuilder.mapSize( map );
12911291
}
12921292

1293-
@Override
1293+
@Override @Deprecated
12941294
public JpaOrder sort(JpaExpression<?> sortExpression, SortDirection sortOrder, NullPrecedence nullPrecedence) {
12951295
return criteriaBuilder.sort( sortExpression, sortOrder, nullPrecedence );
12961296
}
12971297

1298-
@Override
1298+
@Override @Deprecated
12991299
public JpaOrder sort(JpaExpression<?> sortExpression, SortDirection sortOrder, NullPrecedence nullPrecedence, boolean ignoreCase) {
13001300
return criteriaBuilder.sort( sortExpression, sortOrder, nullPrecedence, ignoreCase );
13011301
}

hibernate-core/src/main/java/org/hibernate/query/sqm/NodeBuilder.java

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import org.hibernate.query.criteria.JpaParameterExpression;
3232
import org.hibernate.query.criteria.JpaPredicate;
3333
import org.hibernate.query.criteria.JpaSearchedCase;
34-
import org.hibernate.query.criteria.JpaSelection;
3534
import org.hibernate.query.criteria.JpaSimpleCase;
3635
import org.hibernate.query.criteria.JpaWindow;
3736
import org.hibernate.query.sqm.spi.SqmCreationContext;
@@ -85,7 +84,6 @@
8584
*
8685
* @author Steve Ebersole
8786
*/
88-
@SuppressWarnings("unchecked")
8987
public interface NodeBuilder extends HibernateCriteriaBuilder, SqmCreationContext {
9088
default JpaMetamodel getDomainModel() {
9189
return getJpaMetamodel();
@@ -100,18 +98,25 @@ default NodeBuilder getNodeBuilder() {
10098
return this;
10199
}
102100

101+
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
102+
// Obsolete operations marked for removal
103+
104+
@Deprecated(since = "7", forRemoval = true)
103105
<R> SqmTuple<R> tuple(
104106
Class<R> tupleType,
105107
SqmExpression<?>... expressions);
106108

109+
@Deprecated(since = "7", forRemoval = true)
107110
<R> SqmTuple<R> tuple(
108111
Class<R> tupleType,
109112
List<? extends SqmExpression<?>> expressions);
110113

114+
@Deprecated(since = "7", forRemoval = true)
111115
<R> SqmTuple<R> tuple(
112116
SqmExpressible<R> tupleType,
113117
SqmExpression<?>... expressions);
114118

119+
@Deprecated(since = "7", forRemoval = true)
115120
<R> SqmTuple<R> tuple(
116121
SqmExpressible<R> tupleType,
117122
List<? extends SqmExpression<?>> expressions);
@@ -276,32 +281,32 @@ <T> SqmExpression<T[]> arrayAgg(
276281
@Override
277282
<T> SqmPredicate arrayContainsNullable(T[] array, Expression<T> elementExpression);
278283

279-
@Override
284+
@Override @Deprecated
280285
default <T> SqmPredicate arrayContainsAll(Expression<T[]> arrayExpression, Expression<T[]> subArrayExpression) {
281286
return arrayIncludes( arrayExpression, subArrayExpression );
282287
}
283288

284-
@Override
289+
@Override @Deprecated
285290
default <T> SqmPredicate arrayContainsAll(Expression<T[]> arrayExpression, T[] subArray) {
286291
return arrayIncludes( arrayExpression, subArray );
287292
}
288293

289-
@Override
294+
@Override @Deprecated
290295
default <T> SqmPredicate arrayContainsAll(T[] array, Expression<T[]> subArrayExpression) {
291296
return arrayIncludes( array, subArrayExpression );
292297
}
293298

294-
@Override
299+
@Override @Deprecated
295300
default <T> SqmPredicate arrayContainsAllNullable(Expression<T[]> arrayExpression, Expression<T[]> subArrayExpression) {
296301
return arrayIncludesNullable( arrayExpression, subArrayExpression );
297302
}
298303

299-
@Override
304+
@Override @Deprecated
300305
default <T> SqmPredicate arrayContainsAllNullable(Expression<T[]> arrayExpression, T[] subArray) {
301306
return arrayIncludesNullable( arrayExpression, subArray );
302307
}
303308

304-
@Override
309+
@Override @Deprecated
305310
default <T> SqmPredicate arrayContainsAllNullable(T[] array, Expression<T[]> subArrayExpression) {
306311
return arrayIncludesNullable( array, subArrayExpression );
307312
}
@@ -324,32 +329,32 @@ default <T> SqmPredicate arrayContainsAllNullable(T[] array, Expression<T[]> sub
324329
@Override
325330
<T> SqmPredicate arrayIncludesNullable(T[] array, Expression<T[]> subArrayExpression);
326331

327-
@Override
332+
@Override @Deprecated
328333
default <T> SqmPredicate arrayOverlaps(Expression<T[]> arrayExpression1, Expression<T[]> arrayExpression2) {
329334
return arrayIntersects( arrayExpression1, arrayExpression2 );
330335
}
331336

332-
@Override
337+
@Override @Deprecated
333338
default <T> SqmPredicate arrayOverlaps(Expression<T[]> arrayExpression1, T[] array2) {
334339
return arrayIntersects( arrayExpression1, array2 );
335340
}
336341

337-
@Override
342+
@Override @Deprecated
338343
default <T> SqmPredicate arrayOverlaps(T[] array1, Expression<T[]> arrayExpression2) {
339344
return arrayIntersects( array1, arrayExpression2 );
340345
}
341346

342-
@Override
347+
@Override @Deprecated
343348
default <T> SqmPredicate arrayOverlapsNullable(Expression<T[]> arrayExpression1, Expression<T[]> arrayExpression2) {
344349
return arrayIntersectsNullable( arrayExpression1, arrayExpression2 );
345350
}
346351

347-
@Override
352+
@Override @Deprecated
348353
default <T> SqmPredicate arrayOverlapsNullable(Expression<T[]> arrayExpression1, T[] array2) {
349354
return arrayIntersectsNullable( arrayExpression1, array2 );
350355
}
351356

352-
@Override
357+
@Override @Deprecated
353358
default <T> SqmPredicate arrayOverlapsNullable(T[] array1, Expression<T[]> arrayExpression2) {
354359
return arrayIntersectsNullable( array1, arrayExpression2 );
355360
}
@@ -913,8 +918,7 @@ <T> SqmJsonValueExpression<T> jsonValue(
913918
@Override
914919
<Y> JpaCompoundSelection<Y> construct(Class<Y> resultClass, Selection<?>... selections);
915920

916-
@Override
917-
<Y> JpaCompoundSelection<Y> construct(Class<Y> resultClass, List<? extends JpaSelection<?>> arguments);
921+
<Y> JpaCompoundSelection<Y> construct(Class<Y> resultClass, List<? extends Selection<?>> arguments);
918922

919923
@Override
920924
JpaCompoundSelection<Tuple> tuple(Selection<?>... selections);
@@ -1456,18 +1460,20 @@ SqmSortSpecification sort(
14561460
Nulls nullPrecedence,
14571461
boolean ignoreCase);
14581462

1459-
@Override
1463+
@Override @Deprecated
14601464
default SqmSortSpecification sort(JpaExpression<?> sortExpression, SortDirection sortOrder, NullPrecedence nullPrecedence) {
1461-
return (SqmSortSpecification) HibernateCriteriaBuilder.super.sort( sortExpression, sortOrder, nullPrecedence );
1465+
return (SqmSortSpecification)
1466+
HibernateCriteriaBuilder.super.sort( sortExpression, sortOrder, nullPrecedence );
14621467
}
14631468

1464-
@Override
1469+
@Override @Deprecated
14651470
default SqmSortSpecification sort(
14661471
JpaExpression<?> sortExpression,
14671472
SortDirection sortOrder,
14681473
NullPrecedence nullPrecedence,
14691474
boolean ignoreCase) {
1470-
return (SqmSortSpecification) HibernateCriteriaBuilder.super.sort( sortExpression, sortOrder, nullPrecedence, ignoreCase );
1475+
return (SqmSortSpecification)
1476+
HibernateCriteriaBuilder.super.sort( sortExpression, sortOrder, nullPrecedence, ignoreCase );
14711477
}
14721478

14731479
@Override

hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmCriteriaNodeBuilder.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@
6868
import org.hibernate.query.criteria.JpaParameterExpression;
6969
import org.hibernate.query.criteria.JpaPredicate;
7070
import org.hibernate.query.criteria.JpaSearchOrder;
71-
import org.hibernate.query.criteria.JpaSelection;
7271
import org.hibernate.query.criteria.JpaSubQuery;
7372
import org.hibernate.query.criteria.JpaWindow;
7473
import org.hibernate.query.criteria.ValueHandlingMode;
@@ -903,17 +902,17 @@ public JpaCompoundSelection<Tuple> tuple(List<Selection<?>> selections) {
903902
);
904903
}
905904

906-
@Override
905+
@Override @Deprecated(since = "7", forRemoval = true)
907906
public <R> SqmTuple<R> tuple(Class<R> tupleType, SqmExpression<?>... expressions) {
908907
return tuple( tupleType, asList( expressions ) );
909908
}
910909

911-
@Override
910+
@Override @Deprecated(since = "7", forRemoval = true)
912911
public <R> SqmTuple<R> tuple(SqmExpressible<R> tupleType, SqmExpression<?>... expressions) {
913912
return tuple( tupleType, asList( expressions ) );
914913
}
915914

916-
@Override @SuppressWarnings("unchecked")
915+
@Override @Deprecated(since = "7", forRemoval = true) @SuppressWarnings("unchecked")
917916
public <R> SqmTuple<R> tuple(Class<R> tupleType, List<? extends SqmExpression<?>> expressions) {
918917
final SqmExpressible<R> expressibleType =
919918
tupleType == null || tupleType == Object[].class
@@ -922,7 +921,7 @@ public <R> SqmTuple<R> tuple(Class<R> tupleType, List<? extends SqmExpression<?>
922921
return tuple( expressibleType, expressions );
923922
}
924923

925-
@Override
924+
@Override @Deprecated(since = "7", forRemoval = true)
926925
public <R> SqmTuple<R> tuple(SqmExpressible<R> tupleType, List<? extends SqmExpression<?>> sqmExpressions) {
927926
if ( tupleType == null ) {
928927
//noinspection unchecked
@@ -950,7 +949,7 @@ public <Y> JpaCompoundSelection<Y> array(Class<Y> resultClass, Selection<?>... s
950949
}
951950

952951
@Override
953-
public <Y> JpaCompoundSelection<Y> array(Class<Y> resultClass, List<? extends JpaSelection<?>> selections) {
952+
public <Y> JpaCompoundSelection<Y> array(Class<Y> resultClass, List<? extends Selection<?>> selections) {
954953
return arrayInternal( resultClass,
955954
selections.stream().map( selection -> (SqmSelectableNode<?>) selection ).toList() );
956955
}
@@ -968,7 +967,7 @@ public <Y> JpaCompoundSelection<Y> construct(Class<Y> resultClass, Selection<?>.
968967
}
969968

970969
@Override
971-
public <Y> JpaCompoundSelection<Y> construct(Class<Y> resultClass, List<? extends JpaSelection<?>> arguments) {
970+
public <Y> JpaCompoundSelection<Y> construct(Class<Y> resultClass, List<? extends Selection<?>> arguments) {
972971
return constructInternal( resultClass,
973972
arguments.stream().map( arg -> (SqmSelectableNode<?>) arg ).toList() );
974973
}
@@ -3017,7 +3016,7 @@ private static SessionFactory locateSessionFactoryOnDeserialization(String uuid,
30173016

30183017
@Override
30193018
public <T> SqmFunction<T> sql(String pattern, Class<T> type, Expression<?>... arguments) {
3020-
List<SqmExpression<?>> sqmArguments = new ArrayList<>( expressionList( arguments ) );
3019+
final List<SqmExpression<?>> sqmArguments = new ArrayList<>( expressionList( arguments ) );
30213020
sqmArguments.add( 0, literal( pattern ) );
30223021
return getFunctionDescriptor( "sql" ).generateSqmExpression(
30233022
sqmArguments,
@@ -3028,7 +3027,7 @@ public <T> SqmFunction<T> sql(String pattern, Class<T> type, Expression<?>... ar
30283027

30293028
@Override
30303029
public SqmFunction<String> format(Expression<? extends TemporalAccessor> datetime, String pattern) {
3031-
SqmFormat sqmFormat = new SqmFormat( pattern, null, this );
3030+
final SqmFormat sqmFormat = new SqmFormat( pattern, null, this );
30323031
return getFunctionDescriptor( "format" ).generateSqmExpression(
30333032
asList( (SqmExpression<?>) datetime, sqmFormat ),
30343033
null,

hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmExpression.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -111,17 +111,17 @@ default void visitSubSelectableNodes(Consumer<SqmSelectableNode<?>> jpaSelection
111111

112112
default <X> SqmExpression<X> castAs(DomainType<X> type) {
113113
if ( getNodeType() == type ) {
114-
return (SqmExpression<X>) this;
114+
// safe cast, because we just checked
115+
@SuppressWarnings("unchecked")
116+
final SqmExpression<X> castExpression = (SqmExpression<X>) this;
117+
return castExpression;
118+
}
119+
else {
120+
final QueryEngine queryEngine = nodeBuilder().getQueryEngine();
121+
final SqmCastTarget<?> target = new SqmCastTarget<>( (ReturnableType<?>) type, nodeBuilder() );
122+
return queryEngine.getSqmFunctionRegistry().findFunctionDescriptor( "cast" )
123+
.generateSqmExpression( asList( this, target ), (ReturnableType<X>) type, queryEngine );
115124
}
116-
final QueryEngine queryEngine = nodeBuilder().getQueryEngine();
117-
final SqmCastTarget<T> target = new SqmCastTarget<>( (ReturnableType<T>) type, nodeBuilder() );
118-
return queryEngine.getSqmFunctionRegistry()
119-
.findFunctionDescriptor("cast")
120-
.generateSqmExpression(
121-
asList( this, target ),
122-
(ReturnableType<X>) type,
123-
queryEngine
124-
);
125125
}
126126

127127
@Override

hibernate-core/src/main/java/org/hibernate/query/sqm/tree/expression/SqmFieldLiteral.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ public void appendHqlString(StringBuilder hql) {
146146
public NodeBuilder nodeBuilder() {
147147
return nodeBuilder;
148148
}
149+
149150
@Override
150151
public SqmPredicate isNull() {
151152
return nodeBuilder().isNull( this );
@@ -279,7 +280,6 @@ public SqmPath<?> resolveIndexedAccess(
279280
);
280281
}
281282

282-
283283
@Override
284284
public boolean isCompoundSelection() {
285285
return false;

0 commit comments

Comments
 (0)