Skip to content

Commit 6c36e8c

Browse files
committed
some minor cleanups around SqmSubQuery
1 parent 56094e6 commit 6c36e8c

File tree

6 files changed

+37
-39
lines changed

6 files changed

+37
-39
lines changed

hibernate-core/src/main/java/org/hibernate/query/sqm/spi/SqmCreationHelper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,14 +75,14 @@ public static NavigablePath buildSubNavigablePath(SqmPath<?> lhs, String subNavi
7575
return buildSubNavigablePath( navigablePath, subNavigable, alias );
7676
}
7777

78-
public static SqmPredicate combinePredicates(SqmPredicate baseRestriction, List<SqmPredicate> incomingRestrictions) {
78+
public static SqmPredicate combinePredicates(SqmPredicate baseRestriction, List<Predicate> incomingRestrictions) {
7979
if ( isEmpty( incomingRestrictions ) ) {
8080
return baseRestriction;
8181
}
8282

8383
SqmPredicate combined = combinePredicates( null, baseRestriction );
8484
for ( int i = 0; i < incomingRestrictions.size(); i++ ) {
85-
combined = combinePredicates( combined, incomingRestrictions.get(i) );
85+
combined = combinePredicates( combined, (SqmPredicate) incomingRestrictions.get(i) );
8686
}
8787
return combined;
8888
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ public SqmPredicate in(Expression<Collection<?>> values) {
157157

158158
@Override
159159
public @Nullable JavaType<T> getJavaTypeDescriptor() {
160-
return getNodeType() == null ? null : getNodeType().getExpressibleJavaType();
160+
final SqmBindableType<T> nodeType = getNodeType();
161+
return nodeType == null ? null : nodeType.getExpressibleJavaType();
161162
}
162163
}

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

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,24 +127,28 @@ public SqmPath<?> resolveIndexedAccess(
127127
);
128128
}
129129

130+
private Integer ordinalValue() {
131+
return getExpressibleJavaType().toOrdinal( enumValue );
132+
}
133+
130134
@Override
131135
public SqmExpression<Long> asLong() {
132-
return nodeBuilder().literal( getExpressibleJavaType().toOrdinal( enumValue ).longValue() );
136+
return nodeBuilder().literal( ordinalValue().longValue() );
133137
}
134138

135139
@Override
136140
public SqmExpression<Integer> asInteger() {
137-
return nodeBuilder().literal( getExpressibleJavaType().toOrdinal( enumValue ) );
141+
return nodeBuilder().literal( ordinalValue() );
138142
}
139143

140144
@Override
141145
public SqmExpression<Float> asFloat() {
142-
return nodeBuilder().literal( getExpressibleJavaType().toOrdinal( enumValue ).floatValue() );
146+
return nodeBuilder().literal( ordinalValue().floatValue() );
143147
}
144148

145149
@Override
146150
public SqmExpression<Double> asDouble() {
147-
return nodeBuilder().literal( getExpressibleJavaType().toOrdinal( enumValue ).doubleValue() );
151+
return nodeBuilder().literal( ordinalValue().doubleValue() );
148152
}
149153

150154
@Override

hibernate-core/src/main/java/org/hibernate/query/sqm/tree/from/SqmRoot.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,9 +153,9 @@ public String getEntityName() {
153153

154154
@Override
155155
public String toString() {
156-
return getExplicitAlias() == null
157-
? getEntityName()
158-
: getEntityName() + " as " + getExplicitAlias();
156+
final String entityName = getEntityName();
157+
final String explicitAlias = getExplicitAlias();
158+
return explicitAlias == null ? entityName : entityName + " as " + explicitAlias;
159159
}
160160

161161
@Override

hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmSelectStatement.java

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -188,17 +188,9 @@ public SqmQuerySpec<T> getQuerySpec() {
188188
}
189189

190190
public boolean producesUniqueResults() {
191-
return producesUniqueResults( getQueryPart() );
192-
}
193-
194-
private boolean producesUniqueResults(SqmQueryPart<?> queryPart) {
195-
if ( queryPart instanceof SqmQuerySpec<?> querySpec ) {
196-
return querySpec.producesUniqueResults();
197-
}
198-
else {
199-
// For query groups we have to assume that duplicates are possible
200-
return true;
201-
}
191+
// For query groups we have to assume that duplicates are possible
192+
return !( getQueryPart() instanceof SqmQuerySpec<?> querySpec )
193+
|| querySpec.producesUniqueResults();
202194
}
203195

204196
public boolean containsCollectionFetches() {
@@ -322,8 +314,8 @@ public SqmSelectStatement<T> where(List<Predicate> restrictions) {
322314

323315
@Override
324316
public SqmSelectStatement<T> having(List<Predicate> restrictions) {
325-
//noinspection unchecked,rawtypes
326-
final SqmPredicate combined = combinePredicates( getQuerySpec().getHavingClausePredicate(), (List) restrictions );
317+
final SqmPredicate combined =
318+
combinePredicates( getQuerySpec().getHavingClausePredicate(), restrictions );
327319
getQuerySpec().setHavingClausePredicate( combined );
328320
return this;
329321
}

hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmSubQuery.java

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -238,9 +238,8 @@ public SqmQuery<?> getContainingQuery() {
238238

239239
@Override
240240
public SqmSelectQuery<?> getParent() {
241-
final SqmQuery<?> containingQuery = getContainingQuery();
242-
// JPA only allows sub-queries on select queries
243-
if ( containingQuery instanceof SqmSelectQuery<?> sqmSelectQuery ) {
241+
// JPA only allows subqueries on select queries
242+
if ( getContainingQuery() instanceof SqmSelectQuery<?> sqmSelectQuery ) {
244243
return sqmSelectQuery;
245244
}
246245
else {
@@ -656,39 +655,43 @@ private void applyInferableType(Class<T> type) {
656655
}
657656
}
658657

658+
private <B> SqmExpression<B> castToBasicType(Class<B> type) {
659+
return castAs( nodeBuilder().getTypeConfiguration().getBasicTypeForJavaType( type ) );
660+
}
661+
659662
@Override
660663
public SqmExpression<Long> asLong() {
661-
return castAs( nodeBuilder().getTypeConfiguration().getBasicTypeForJavaType( Long.class ) );
664+
return castToBasicType( Long.class );
662665
}
663666

664667
@Override
665668
public SqmExpression<Integer> asInteger() {
666-
return castAs( nodeBuilder().getTypeConfiguration().getBasicTypeForJavaType( Integer.class ) );
669+
return castToBasicType( Integer.class );
667670
}
668671

669672
@Override
670673
public SqmExpression<Float> asFloat() {
671-
return castAs( nodeBuilder().getTypeConfiguration().getBasicTypeForJavaType( Float.class ) );
674+
return castToBasicType( Float.class );
672675
}
673676

674677
@Override
675678
public SqmExpression<Double> asDouble() {
676-
return castAs( nodeBuilder().getTypeConfiguration().getBasicTypeForJavaType( Double.class ) );
679+
return castToBasicType( Double.class );
677680
}
678681

679682
@Override
680683
public SqmExpression<BigDecimal> asBigDecimal() {
681-
return castAs( nodeBuilder().getTypeConfiguration().getBasicTypeForJavaType( BigDecimal.class ) );
684+
return castToBasicType( BigDecimal.class );
682685
}
683686

684687
@Override
685688
public SqmExpression<BigInteger> asBigInteger() {
686-
return castAs( nodeBuilder().getTypeConfiguration().getBasicTypeForJavaType( BigInteger.class ) );
689+
return castToBasicType( BigInteger.class );
687690
}
688691

689692
@Override
690693
public SqmExpression<String> asString() {
691-
return castAs( nodeBuilder().getTypeConfiguration().getBasicTypeForJavaType( String.class ) );
694+
return castToBasicType( String.class );
692695
}
693696

694697
@Override
@@ -698,10 +701,8 @@ public <X> SqmExpression<X> as(Class<X> type) {
698701

699702
@Override
700703
public JavaType<T> getJavaTypeDescriptor() {
701-
if ( getNodeType() == null ) {
702-
return null;
703-
}
704-
return getNodeType().getExpressibleJavaType();
704+
final SqmBindableType<T> nodeType = getNodeType();
705+
return nodeType == null ? null : nodeType.getExpressibleJavaType();
705706
}
706707

707708
@Override
@@ -728,8 +729,8 @@ public Subquery<T> where(List<Predicate> restrictions) {
728729

729730
@Override
730731
public Subquery<T> having(List<Predicate> restrictions) {
731-
//noinspection unchecked,rawtypes
732-
final SqmPredicate combined = combinePredicates( getQuerySpec().getHavingClausePredicate(), (List) restrictions );
732+
final SqmPredicate combined =
733+
combinePredicates( getQuerySpec().getHavingClausePredicate(), restrictions );
733734
getQuerySpec().setHavingClausePredicate( combined );
734735
return this;
735736
}

0 commit comments

Comments
 (0)