Skip to content

Commit 409669b

Browse files
committed
HHH-19364 completely remove use of addOrder
1 parent 4c5437e commit 409669b

File tree

5 files changed

+49
-59
lines changed

5 files changed

+49
-59
lines changed

tooling/metamodel-generator/src/main/java/org/hibernate/processor/annotation/AbstractCriteriaMethod.java

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -80,34 +80,35 @@ String specificationType() {
8080

8181
@Override
8282
void createQuery(StringBuilder declaration) {
83-
if ( isUsingSpecification() ) {
83+
declaration
84+
.append(localSessionName())
85+
.append(".")
86+
.append(createQueryMethod())
87+
.append('(');
88+
if (isUsingSpecification() ) {
8489
declaration
85-
.append( "\t\t\t.createQuery(" )
86-
.append( localSessionName() )
87-
.append( ")\n" );
90+
.append("_spec.buildCriteriaQuery(_builder)");
8891
}
8992
else {
90-
declaration
91-
.append(localSessionName())
92-
.append(".")
93-
.append(createQueryMethod())
94-
.append("(_query)\n");
93+
declaration.append("_query");
9594
}
95+
declaration.append(")\n");
9696
}
9797

9898
@Override
9999
void createSpecification(StringBuilder declaration) {
100100
if ( isUsingSpecification() ) {
101101
declaration
102+
.append( "\tvar _spec = " )
102103
.append( annotationMetaEntity.importType( specificationType() ) )
103-
.append( ".create(_query)\n" );
104+
.append( ".create(_query);\n" );
104105
}
105106
}
106107

107108
@Override
108109
boolean isUsingSpecification() {
109-
return !isReactive()
110-
&& ( hasRestriction() || hasOrder() && !isJakartaCursoredPage(containerType) );
110+
return hasRestriction()
111+
|| hasOrder() && !isJakartaCursoredPage(containerType);
111112
}
112113

113114
void createCriteriaQuery(StringBuilder declaration) {
@@ -126,10 +127,11 @@ void createCriteriaQuery(StringBuilder declaration) {
126127
private void createBuilder(StringBuilder declaration) {
127128
declaration
128129
.append("\tvar _builder = ")
129-
.append(localSessionName())
130-
.append(isUsingEntityManager()
131-
? ".getEntityManagerFactory()"
132-
: ".getFactory()")
130+
.append(localSessionName());
131+
if ( isReactive() ) {
132+
declaration.append(".getFactory()");
133+
}
134+
declaration
133135
.append(".getCriteriaBuilder();\n");
134136
}
135137

tooling/metamodel-generator/src/main/java/org/hibernate/processor/annotation/AbstractQueryMethod.java

Lines changed: 12 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -279,25 +279,13 @@ void handleSorting(
279279
StringBuilder declaration, List<String> paramTypes,
280280
@Nullable String containerType) {
281281
if ( !isJakartaCursoredPage(containerType)
282-
&& isUsingSpecification()
283282
&& hasOrdering(paramTypes) ) {
283+
if ( !isUsingSpecification() ) {
284+
throw new AssertionError();
285+
}
284286
declaration
285-
.append("\t\t\t.resort(_orders)\n");
286-
}
287-
}
288-
289-
boolean applyOrder(
290-
StringBuilder declaration, List<String> paramTypes,
291-
@Nullable String containerType, boolean unwrapped) {
292-
if ( !isJakartaCursoredPage(containerType)
293-
&& !isUsingSpecification()
294-
&& hasOrdering(paramTypes) ) {
295-
unwrapQuery( declaration, unwrapped );
296-
declaration
297-
.append("\t\t\t.setOrder(_orders)\n");
298-
return true;
287+
.append("\t_spec.resort(_orders);\n");
299288
}
300-
return unwrapped;
301289
}
302290

303291
void handlePageParameters(
@@ -322,25 +310,25 @@ void handleRestrictionParameters(
322310
if ( isRestrictionParam(paramType) ) {
323311
if ( paramType.startsWith(LIST) || paramType.endsWith("[]") ) {
324312
declaration
325-
.append( "\t\t\t.restrict(" )
313+
.append( "\t_spec.restrict(" )
326314
.append( annotationMetaEntity.importType(HIB_RESTRICTION) )
327315
.append( ".all(" )
328316
.append( paramName )
329-
.append( "))\n" );
317+
.append( "));\n" );
330318

331319
}
332320
else {
333321
declaration
334-
.append( "\t\t\t.restrict(" )
322+
.append( "\t_spec.restrict(" )
335323
.append( paramName )
336-
.append( ")\n" );
324+
.append( ");\n" );
337325
}
338326
}
339327
else if ( isRangeParam(paramType) && returnTypeName!= null ) {
340328
final TypeElement entityElement = annotationMetaEntity.getContext().getElementUtils()
341329
.getTypeElement( returnTypeName );
342330
declaration
343-
.append("\t\t\t.restrict(")
331+
.append("\t_spec.restrict(")
344332
.append(annotationMetaEntity.importType(HIB_RESTRICTION))
345333
.append(".restrict(")
346334
.append(annotationMetaEntity.importType(
@@ -349,7 +337,7 @@ else if ( isRangeParam(paramType) && returnTypeName!= null ) {
349337
.append(paramName)
350338
.append(", ")
351339
.append(paramName)
352-
.append("))\n");
340+
.append("));\n");
353341
}
354342
}
355343
}
@@ -387,7 +375,7 @@ static void closingBrace(StringBuilder declaration) {
387375
}
388376

389377
void unwrapQuery(StringBuilder declaration, boolean unwrapped) {
390-
if ( !unwrapped && isUsingEntityManager() && !isUsingSpecification() ) {
378+
if ( !unwrapped && isUsingEntityManager() ) {
391379
declaration
392380
.append("\t\t\t.unwrap(")
393381
.append(annotationMetaEntity.importType(HIB_SELECTION_QUERY))
@@ -547,9 +535,6 @@ private void totalResults(StringBuilder declaration, List<String> paramTypes) {
547535
declaration
548536
.append(parameterName(JD_PAGE_REQUEST, paramTypes, paramNames))
549537
.append(".requestTotal()\n\t\t\t\t\t\t? ");
550-
// TODO: indentation is all messed up here!
551-
createSpecification( declaration );
552-
handleRestrictionParameters( declaration, paramTypes );
553538
createQuery( declaration );
554539
setParameters( declaration, paramTypes, "\t\t\t\t\t");
555540
if ( isUsingEntityManager() ) {
@@ -784,7 +769,7 @@ protected void executeSelect(
784769
}
785770
break;
786771
default:
787-
if ( isUsingEntityManager() && !unwrapped && mustUnwrap && !isUsingSpecification() ) {
772+
if ( isUsingEntityManager() && !unwrapped && mustUnwrap ) {
788773
declaration
789774
.append("\t\t\t.unwrap(")
790775
.append(annotationMetaEntity.importType(containerType))

tooling/metamodel-generator/src/main/java/org/hibernate/processor/annotation/CriteriaDeleteMethod.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@ boolean singleResult() {
5454

5555
@Override
5656
void executeQuery(StringBuilder declaration, List<String> paramTypes) {
57-
tryReturn(declaration);
5857
createSpecification( declaration );
5958
handleRestrictionParameters( declaration, paramTypes );
59+
tryReturn(declaration);
6060
createQuery( declaration );
6161
execute( declaration );
6262
}

tooling/metamodel-generator/src/main/java/org/hibernate/processor/annotation/CriteriaFinderMethod.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,17 +54,16 @@ boolean singleResult() {
5454
void executeQuery(StringBuilder declaration, List<String> paramTypes) {
5555
declaration
5656
.append('\n');
57-
collectOrdering( declaration, paramTypes );
58-
tryReturn( declaration, paramTypes, containerType );
59-
castResult( declaration );
6057
createSpecification( declaration );
6158
handleRestrictionParameters( declaration, paramTypes );
59+
collectOrdering( declaration, paramTypes );
6260
handleSorting( declaration, paramTypes, containerType );
61+
tryReturn( declaration, paramTypes, containerType );
62+
castResult( declaration );
6363
createQuery( declaration );
6464
handlePageParameters( declaration, paramTypes, containerType );
6565
boolean unwrapped = !isUsingEntityManager();
6666
unwrapped = enableFetchProfile( declaration, unwrapped );
67-
unwrapped = applyOrder( declaration, paramTypes, containerType, unwrapped );
6867
execute( declaration, paramTypes, unwrapped );
6968
}
7069

tooling/metamodel-generator/src/main/java/org/hibernate/processor/annotation/QueryMethod.java

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -92,19 +92,17 @@ public String getAttributeDeclarationString() {
9292
comment( declaration );
9393
modifiers( paramTypes, declaration );
9494
preamble( declaration, paramTypes );
95+
createSpecification( declaration );
96+
handleRestrictionParameters( declaration, paramTypes );
9597
collectOrdering( declaration, paramTypes );
98+
handleSorting( declaration, paramTypes, containerType );
9699
chainSession( declaration );
97100
tryReturn( declaration, paramTypes, containerType );
98101
castResult( declaration );
99-
createSpecification( declaration );
100-
handleRestrictionParameters( declaration, paramTypes );
101-
handleSorting( declaration, paramTypes, containerType );
102102
createQuery( declaration );
103103
setParameters( declaration, paramTypes, "");
104104
handlePageParameters( declaration, paramTypes, containerType );
105-
boolean unwrapped = !isUsingEntityManager();
106-
unwrapped = applyOrder( declaration, paramTypes, containerType, unwrapped );
107-
execute( declaration, unwrapped );
105+
execute( declaration, !isUsingEntityManager() );
108106
convertExceptions( declaration );
109107
chainSessionEnd( isUpdate, declaration );
110108
closingBrace( declaration );
@@ -121,9 +119,15 @@ String specificationType() {
121119
void createQuery(StringBuilder declaration) {
122120
if ( isUsingSpecification() ) {
123121
declaration
124-
.append( "\t\t\t.createQuery(" )
125-
.append( localSessionName() )
126-
.append( ")\n" );
122+
.append(localSessionName())
123+
.append(".createQuery(_spec.buildCriteriaQuery(")
124+
.append(localSessionName());
125+
if ( isReactive() ) {
126+
declaration.append(".getFactory()");
127+
}
128+
declaration
129+
.append(".getCriteriaBuilder()") // TODO no such method in Reactive!
130+
.append( "))\n" );
127131
}
128132
else {
129133
// can't use Specification
@@ -147,19 +151,19 @@ void createQuery(StringBuilder declaration) {
147151
void createSpecification(StringBuilder declaration) {
148152
if ( returnTypeClass != null && isUsingSpecification() ) {
149153
declaration
154+
.append( "\tvar _spec = " )
150155
.append( annotationMetaEntity.importType( specificationType() ) )
151156
.append( ".create(" )
152157
.append( annotationMetaEntity.importType( returnTypeClass ) )
153158
.append( ".class, " )
154159
.append( getConstantName() )
155-
.append( ")\n" );
160+
.append( ");\n" );
156161
}
157162
}
158163

159164
@Override
160165
boolean isUsingSpecification() {
161166
return returnTypeClass != null
162-
&& !isReactive()
163167
&& ( hasRestriction() || hasOrder() && !isJakartaCursoredPage(containerType) );
164168
}
165169

0 commit comments

Comments
 (0)