Skip to content

Commit 589826b

Browse files
committed
HHH-18274 Properly resolving Java type in binary and unary expressions
1 parent ecd83b3 commit 589826b

File tree

3 files changed

+8
-9
lines changed

3 files changed

+8
-9
lines changed

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -491,8 +491,8 @@ else if ( !isTypeAssignable( targetType, expressionType, bindingContext) ) {
491491
}
492492

493493
public static void assertOperable(SqmExpression<?> left, SqmExpression<?> right, BinaryArithmeticOperator op) {
494-
final SqmExpressible<?> leftNodeType = left.getNodeType();
495-
final SqmExpressible<?> rightNodeType = right.getNodeType();
494+
final SqmExpressible<?> leftNodeType = left.getExpressible();
495+
final SqmExpressible<?> rightNodeType = right.getExpressible();
496496
if ( leftNodeType != null && rightNodeType != null ) {
497497
final Class<?> leftJavaType = leftNodeType.getRelationalJavaType().getJavaTypeClass();
498498
final Class<?> rightJavaType = rightNodeType.getRelationalJavaType().getJavaTypeClass();
@@ -628,7 +628,7 @@ public static void assertDuration(SqmExpression<?> expression) {
628628
}
629629

630630
public static void assertNumeric(SqmExpression<?> expression, UnaryArithmeticOperator op) {
631-
final SqmExpressible<?> nodeType = expression.getNodeType();
631+
final SqmExpressible<?> nodeType = expression.getExpressible();
632632
if ( nodeType != null ) {
633633
if ( !( nodeType.getSqmType() instanceof JdbcMapping jdbcMapping )
634634
|| !jdbcMapping.getJdbcType().isNumber() ) {

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

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import org.hibernate.query.sqm.tree.SqmCopyContext;
1313
import org.hibernate.query.sqm.tree.select.SqmSelectableNode;
1414

15-
1615
import static org.hibernate.query.sqm.BinaryArithmeticOperator.ADD;
1716
import static org.hibernate.query.sqm.BinaryArithmeticOperator.SUBTRACT;
1817
import static org.hibernate.type.spi.TypeConfiguration.isDuration;
@@ -34,8 +33,8 @@ public SqmBinaryArithmetic(
3433
//noinspection unchecked
3534
super(
3635
(SqmExpressible<T>) domainModel.getTypeConfiguration().resolveArithmeticType(
37-
lhsOperand.getNodeType(),
38-
rhsOperand.getNodeType(),
36+
lhsOperand.getExpressible(),
37+
rhsOperand.getExpressible(),
3938
operator
4039
),
4140
nodeBuilder
@@ -49,8 +48,8 @@ public SqmBinaryArithmetic(
4948
( operator == ADD || operator == SUBTRACT ) ) {
5049
return;
5150
}
52-
this.lhsOperand.applyInferableType( rhsOperand.getNodeType() );
53-
this.rhsOperand.applyInferableType( lhsOperand.getNodeType() );
51+
this.lhsOperand.applyInferableType( rhsOperand.getExpressible() );
52+
this.rhsOperand.applyInferableType( lhsOperand.getExpressible() );
5453
}
5554

5655
public SqmBinaryArithmetic(

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public SqmUnaryOperation(UnaryArithmeticOperator operation, SqmExpression<T> ope
2222
operation,
2323
operand,
2424
operand.nodeBuilder().getTypeConfiguration().getBasicTypeForJavaType(
25-
operand.getNodeType().getRelationalJavaType().getJavaType()
25+
operand.getExpressible().getRelationalJavaType().getJavaType()
2626
)
2727
);
2828
}

0 commit comments

Comments
 (0)