HHH-18274 Applied pull request suggestions

This commit is contained in:
Čedomir Igaly 2024-06-25 15:39:51 +02:00 committed by Čedomir Igaly
parent 81330a55e5
commit 1917357481
3 changed files with 10 additions and 36 deletions

View File

@ -491,8 +491,8 @@ public class TypecheckUtil {
}
public static void assertOperable(SqmExpression<?> left, SqmExpression<?> right, BinaryArithmeticOperator op) {
final SqmExpressible<?> leftNodeType = isGeneric( left ) ? left.getExpressible() : left.getNodeType();
final SqmExpressible<?> rightNodeType = isGeneric( right ) ? right.getExpressible() : right.getNodeType();
final SqmExpressible<?> leftNodeType = left.getExpressible();
final SqmExpressible<?> rightNodeType = right.getExpressible();
if ( leftNodeType != null && rightNodeType != null ) {
final Class<?> leftJavaType = leftNodeType.getRelationalJavaType().getJavaTypeClass();
final Class<?> rightJavaType = rightNodeType.getRelationalJavaType().getJavaTypeClass();
@ -590,11 +590,6 @@ public class TypecheckUtil {
}
}
public static boolean isGeneric(SqmTypedNode<?> arg) {
return arg instanceof SqmPath && ( (SqmPath) arg ).getModel() instanceof SqmPathSource
&& ( (SqmPathSource) ( (SqmPath) arg ).getModel() ).isGeneric();
}
public static boolean isNumberArray(SqmExpressible<?> expressible) {
if ( expressible != null ) {
final DomainType<?> domainType = expressible.getSqmType();
@ -633,9 +628,7 @@ public class TypecheckUtil {
}
public static void assertNumeric(SqmExpression<?> expression, UnaryArithmeticOperator op) {
final SqmExpressible<?> nodeType = isGeneric( expression )
? expression.getExpressible()
: expression.getNodeType();
final SqmExpressible<?> nodeType = expression.getExpressible();
if ( nodeType != null ) {
if ( !( nodeType.getSqmType() instanceof JdbcMapping jdbcMapping )
|| !jdbcMapping.getJdbcType().isNumber() ) {

View File

@ -9,12 +9,9 @@ import org.hibernate.query.sqm.BinaryArithmeticOperator;
import org.hibernate.query.sqm.NodeBuilder;
import org.hibernate.query.sqm.SemanticQueryWalker;
import org.hibernate.query.sqm.SqmExpressible;
import org.hibernate.query.sqm.SqmPathSource;
import org.hibernate.query.sqm.tree.SqmCopyContext;
import org.hibernate.query.sqm.tree.domain.SqmPath;
import org.hibernate.query.sqm.tree.select.SqmSelectableNode;
import static org.hibernate.query.sqm.BinaryArithmeticOperator.ADD;
import static org.hibernate.query.sqm.BinaryArithmeticOperator.SUBTRACT;
import static org.hibernate.type.spi.TypeConfiguration.isDuration;
@ -36,8 +33,8 @@ public class SqmBinaryArithmetic<T> extends AbstractSqmExpression<T> implements
//noinspection unchecked
super(
(SqmExpressible<T>) domainModel.getTypeConfiguration().resolveArithmeticType(
getExpressibleNodeType( lhsOperand ),
getExpressibleNodeType( rhsOperand ),
lhsOperand.getExpressible(),
rhsOperand.getExpressible(),
operator
),
nodeBuilder
@ -51,20 +48,8 @@ public class SqmBinaryArithmetic<T> extends AbstractSqmExpression<T> implements
( operator == ADD || operator == SUBTRACT ) ) {
return;
}
this.lhsOperand.applyInferableType( getExpressibleNodeType( rhsOperand ) );
this.rhsOperand.applyInferableType( getExpressibleNodeType( lhsOperand ) );
}
private static SqmExpressible<?> getExpressibleNodeType(SqmExpression<?> arg) {
if ( arg instanceof SqmPath ) {
SqmPath path = (SqmPath) arg;
if ( path.getModel() instanceof SqmPathSource ) {
if ( ( (SqmPathSource) path.getModel() ).isGeneric() ) {
return path.getResolvedModel();
}
}
}
return arg.getNodeType();
this.lhsOperand.applyInferableType( rhsOperand.getExpressible() );
this.rhsOperand.applyInferableType( lhsOperand.getExpressible() );
}
public SqmBinaryArithmetic(

View File

@ -10,8 +10,6 @@ import org.hibernate.query.sqm.UnaryArithmeticOperator;
import org.hibernate.query.sqm.tree.SqmCopyContext;
import org.hibernate.query.sqm.tree.select.SqmSelectableNode;
import static org.hibernate.query.sqm.internal.TypecheckUtil.isGeneric;
/**
* @author Steve Ebersole
*/
@ -23,11 +21,9 @@ public class SqmUnaryOperation<T> extends AbstractSqmExpression<T> implements Sq
this(
operation,
operand,
isGeneric( operand ) ?
operand.getExpressible() :
operand.nodeBuilder().getTypeConfiguration().getBasicTypeForJavaType(
operand.getNodeType().getRelationalJavaType().getJavaType()
)
operand.nodeBuilder().getTypeConfiguration().getBasicTypeForJavaType(
operand.getExpressible().getRelationalJavaType().getJavaType()
)
);
}