HHH-18046 Cast parameters used as arithmetic operands on DB2
This commit is contained in:
parent
c3692161f5
commit
88bdfbfbd4
|
@ -139,6 +139,11 @@ public class DB2LegacySqlAstTranslator<T extends JdbcOperation> extends Abstract
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void visitArithmeticOperand(Expression expression) {
|
||||
render( expression, SqlAstNodeRenderingMode.NO_PLAIN_PARAMETER );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitBooleanExpressionPredicate(BooleanExpressionPredicate booleanExpressionPredicate) {
|
||||
if ( getDB2Version().isSameOrAfter( 11 ) ) {
|
||||
|
|
|
@ -337,23 +337,8 @@ public class DerbyLegacySqlAstTranslator<T extends JdbcOperation> extends Abstra
|
|||
}
|
||||
|
||||
@Override
|
||||
public void visitBinaryArithmeticExpression(BinaryArithmeticExpression arithmeticExpression) {
|
||||
final BinaryArithmeticOperator operator = arithmeticExpression.getOperator();
|
||||
if ( operator == BinaryArithmeticOperator.MODULO ) {
|
||||
append( "mod" );
|
||||
appendSql( OPEN_PARENTHESIS );
|
||||
arithmeticExpression.getLeftHandOperand().accept( this );
|
||||
appendSql( ',' );
|
||||
arithmeticExpression.getRightHandOperand().accept( this );
|
||||
appendSql( CLOSE_PARENTHESIS );
|
||||
}
|
||||
else {
|
||||
appendSql( OPEN_PARENTHESIS );
|
||||
render( arithmeticExpression.getLeftHandOperand(), SqlAstNodeRenderingMode.NO_PLAIN_PARAMETER );
|
||||
appendSql( arithmeticExpression.getOperator().getOperatorSqlTextString() );
|
||||
render( arithmeticExpression.getRightHandOperand(), SqlAstNodeRenderingMode.NO_PLAIN_PARAMETER );
|
||||
appendSql( CLOSE_PARENTHESIS );
|
||||
}
|
||||
protected void visitArithmeticOperand(Expression expression) {
|
||||
render( expression, SqlAstNodeRenderingMode.NO_PLAIN_PARAMETER );
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -324,12 +324,17 @@ public class H2LegacySqlAstTranslator<T extends JdbcOperation> extends AbstractS
|
|||
@Override
|
||||
public void visitBinaryArithmeticExpression(BinaryArithmeticExpression arithmeticExpression) {
|
||||
appendSql( OPEN_PARENTHESIS );
|
||||
render( arithmeticExpression.getLeftHandOperand(), SqlAstNodeRenderingMode.NO_PLAIN_PARAMETER );
|
||||
visitArithmeticOperand( arithmeticExpression.getLeftHandOperand() );
|
||||
appendSql( arithmeticExpression.getOperator().getOperatorSqlTextString() );
|
||||
render( arithmeticExpression.getRightHandOperand(), SqlAstNodeRenderingMode.NO_PLAIN_PARAMETER );
|
||||
visitArithmeticOperand( arithmeticExpression.getRightHandOperand() );
|
||||
appendSql( CLOSE_PARENTHESIS );
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void visitArithmeticOperand(Expression expression) {
|
||||
render( expression, SqlAstNodeRenderingMode.NO_PLAIN_PARAMETER );
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean renderPrimaryTableReference(TableGroup tableGroup, LockMode lockMode) {
|
||||
final TableReference tableRef = tableGroup.getPrimaryTableReference();
|
||||
|
|
|
@ -352,22 +352,7 @@ public class HSQLLegacySqlAstTranslator<T extends JdbcOperation> extends Abstrac
|
|||
}
|
||||
|
||||
@Override
|
||||
public void visitBinaryArithmeticExpression(BinaryArithmeticExpression arithmeticExpression) {
|
||||
final BinaryArithmeticOperator operator = arithmeticExpression.getOperator();
|
||||
if ( operator == BinaryArithmeticOperator.MODULO ) {
|
||||
append( "mod" );
|
||||
appendSql( OPEN_PARENTHESIS );
|
||||
arithmeticExpression.getLeftHandOperand().accept( this );
|
||||
appendSql( ',' );
|
||||
arithmeticExpression.getRightHandOperand().accept( this );
|
||||
appendSql( CLOSE_PARENTHESIS );
|
||||
}
|
||||
else {
|
||||
appendSql( OPEN_PARENTHESIS );
|
||||
render( arithmeticExpression.getLeftHandOperand(), SqlAstNodeRenderingMode.NO_PLAIN_PARAMETER );
|
||||
appendSql( arithmeticExpression.getOperator().getOperatorSqlTextString() );
|
||||
render( arithmeticExpression.getRightHandOperand(), SqlAstNodeRenderingMode.NO_PLAIN_PARAMETER );
|
||||
appendSql( CLOSE_PARENTHESIS );
|
||||
}
|
||||
protected void visitArithmeticOperand(Expression expression) {
|
||||
render( expression, SqlAstNodeRenderingMode.NO_PLAIN_PARAMETER );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -330,9 +330,9 @@ public class PostgreSQLLegacySqlAstTranslator<T extends JdbcOperation> extends A
|
|||
@Override
|
||||
public void visitBinaryArithmeticExpression(BinaryArithmeticExpression arithmeticExpression) {
|
||||
appendSql( OPEN_PARENTHESIS );
|
||||
arithmeticExpression.getLeftHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getLeftHandOperand() );
|
||||
appendSql( arithmeticExpression.getOperator().getOperatorSqlTextString() );
|
||||
arithmeticExpression.getRightHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getRightHandOperand() );
|
||||
appendSql( CLOSE_PARENTHESIS );
|
||||
}
|
||||
|
||||
|
|
|
@ -523,9 +523,9 @@ public class SQLServerLegacySqlAstTranslator<T extends JdbcOperation> extends Ab
|
|||
@Override
|
||||
public void visitBinaryArithmeticExpression(BinaryArithmeticExpression arithmeticExpression) {
|
||||
appendSql( OPEN_PARENTHESIS );
|
||||
arithmeticExpression.getLeftHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getLeftHandOperand() );
|
||||
appendSql( arithmeticExpression.getOperator().getOperatorSqlTextString() );
|
||||
arithmeticExpression.getRightHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getRightHandOperand() );
|
||||
appendSql( CLOSE_PARENTHESIS );
|
||||
}
|
||||
|
||||
|
|
|
@ -460,9 +460,9 @@ public class SybaseASELegacySqlAstTranslator<T extends JdbcOperation> extends Ab
|
|||
@Override
|
||||
public void visitBinaryArithmeticExpression(BinaryArithmeticExpression arithmeticExpression) {
|
||||
appendSql( OPEN_PARENTHESIS );
|
||||
arithmeticExpression.getLeftHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getLeftHandOperand() );
|
||||
appendSql( arithmeticExpression.getOperator().getOperatorSqlTextString() );
|
||||
arithmeticExpression.getRightHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getRightHandOperand() );
|
||||
appendSql( CLOSE_PARENTHESIS );
|
||||
}
|
||||
|
||||
|
|
|
@ -219,9 +219,9 @@ public class SybaseAnywhereSqlAstTranslator<T extends JdbcOperation> extends Abs
|
|||
@Override
|
||||
public void visitBinaryArithmeticExpression(BinaryArithmeticExpression arithmeticExpression) {
|
||||
appendSql( OPEN_PARENTHESIS );
|
||||
arithmeticExpression.getLeftHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getLeftHandOperand() );
|
||||
appendSql( arithmeticExpression.getOperator().getOperatorSqlTextString() );
|
||||
arithmeticExpression.getRightHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getRightHandOperand() );
|
||||
appendSql( CLOSE_PARENTHESIS );
|
||||
}
|
||||
|
||||
|
|
|
@ -242,9 +242,9 @@ public class SybaseLegacySqlAstTranslator<T extends JdbcOperation> extends Abstr
|
|||
@Override
|
||||
public void visitBinaryArithmeticExpression(BinaryArithmeticExpression arithmeticExpression) {
|
||||
appendSql( OPEN_PARENTHESIS );
|
||||
arithmeticExpression.getLeftHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getLeftHandOperand() );
|
||||
appendSql( arithmeticExpression.getOperator().getOperatorSqlTextString() );
|
||||
arithmeticExpression.getRightHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getRightHandOperand() );
|
||||
appendSql( CLOSE_PARENTHESIS );
|
||||
}
|
||||
|
||||
|
|
|
@ -138,6 +138,11 @@ public class DB2SqlAstTranslator<T extends JdbcOperation> extends AbstractSqlAst
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void visitArithmeticOperand(Expression expression) {
|
||||
render( expression, SqlAstNodeRenderingMode.NO_PLAIN_PARAMETER );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitBooleanExpressionPredicate(BooleanExpressionPredicate booleanExpressionPredicate) {
|
||||
if ( getDB2Version().isSameOrAfter( 11 ) ) {
|
||||
|
|
|
@ -337,22 +337,7 @@ public class DerbySqlAstTranslator<T extends JdbcOperation> extends AbstractSqlA
|
|||
}
|
||||
|
||||
@Override
|
||||
public void visitBinaryArithmeticExpression(BinaryArithmeticExpression arithmeticExpression) {
|
||||
final BinaryArithmeticOperator operator = arithmeticExpression.getOperator();
|
||||
if ( operator == BinaryArithmeticOperator.MODULO ) {
|
||||
append( "mod" );
|
||||
appendSql( OPEN_PARENTHESIS );
|
||||
arithmeticExpression.getLeftHandOperand().accept( this );
|
||||
appendSql( ',' );
|
||||
arithmeticExpression.getRightHandOperand().accept( this );
|
||||
appendSql( CLOSE_PARENTHESIS );
|
||||
}
|
||||
else {
|
||||
appendSql( OPEN_PARENTHESIS );
|
||||
render( arithmeticExpression.getLeftHandOperand(), SqlAstNodeRenderingMode.NO_PLAIN_PARAMETER );
|
||||
appendSql( arithmeticExpression.getOperator().getOperatorSqlTextString() );
|
||||
render( arithmeticExpression.getRightHandOperand(), SqlAstNodeRenderingMode.NO_PLAIN_PARAMETER );
|
||||
appendSql( CLOSE_PARENTHESIS );
|
||||
}
|
||||
protected void visitArithmeticOperand(Expression expression) {
|
||||
render( expression, SqlAstNodeRenderingMode.NO_PLAIN_PARAMETER );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -298,12 +298,17 @@ public class H2SqlAstTranslator<T extends JdbcOperation> extends SqlAstTranslato
|
|||
@Override
|
||||
public void visitBinaryArithmeticExpression(BinaryArithmeticExpression arithmeticExpression) {
|
||||
appendSql( OPEN_PARENTHESIS );
|
||||
render( arithmeticExpression.getLeftHandOperand(), SqlAstNodeRenderingMode.NO_PLAIN_PARAMETER );
|
||||
visitArithmeticOperand( arithmeticExpression.getLeftHandOperand() );
|
||||
appendSql( arithmeticExpression.getOperator().getOperatorSqlTextString() );
|
||||
render( arithmeticExpression.getRightHandOperand(), SqlAstNodeRenderingMode.NO_PLAIN_PARAMETER );
|
||||
visitArithmeticOperand( arithmeticExpression.getRightHandOperand() );
|
||||
appendSql( CLOSE_PARENTHESIS );
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void visitArithmeticOperand(Expression expression) {
|
||||
render( expression, SqlAstNodeRenderingMode.NO_PLAIN_PARAMETER );
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean renderPrimaryTableReference(TableGroup tableGroup, LockMode lockMode) {
|
||||
final TableReference tableRef = tableGroup.getPrimaryTableReference();
|
||||
|
|
|
@ -53,9 +53,9 @@ public class HANASqlAstTranslator<T extends JdbcOperation> extends AbstractSqlAs
|
|||
public void visitBinaryArithmeticExpression(BinaryArithmeticExpression arithmeticExpression) {
|
||||
if ( isIntegerDivisionEmulationRequired( arithmeticExpression ) ) {
|
||||
appendSql( "cast(" );
|
||||
arithmeticExpression.getLeftHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getLeftHandOperand() );
|
||||
appendSql( arithmeticExpression.getOperator().getOperatorSqlTextString() );
|
||||
arithmeticExpression.getRightHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getRightHandOperand() );
|
||||
appendSql( " as int)" );
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -342,23 +342,8 @@ public class HSQLSqlAstTranslator<T extends JdbcOperation> extends AbstractSqlAs
|
|||
}
|
||||
|
||||
@Override
|
||||
public void visitBinaryArithmeticExpression(BinaryArithmeticExpression arithmeticExpression) {
|
||||
final BinaryArithmeticOperator operator = arithmeticExpression.getOperator();
|
||||
if ( operator == BinaryArithmeticOperator.MODULO ) {
|
||||
append( "mod" );
|
||||
appendSql( OPEN_PARENTHESIS );
|
||||
arithmeticExpression.getLeftHandOperand().accept( this );
|
||||
appendSql( ',' );
|
||||
arithmeticExpression.getRightHandOperand().accept( this );
|
||||
appendSql( CLOSE_PARENTHESIS );
|
||||
}
|
||||
else {
|
||||
appendSql( OPEN_PARENTHESIS );
|
||||
render( arithmeticExpression.getLeftHandOperand(), SqlAstNodeRenderingMode.NO_PLAIN_PARAMETER );
|
||||
appendSql( arithmeticExpression.getOperator().getOperatorSqlTextString() );
|
||||
render( arithmeticExpression.getRightHandOperand(), SqlAstNodeRenderingMode.NO_PLAIN_PARAMETER );
|
||||
appendSql( CLOSE_PARENTHESIS );
|
||||
}
|
||||
protected void visitArithmeticOperand(Expression expression) {
|
||||
render( expression, SqlAstNodeRenderingMode.NO_PLAIN_PARAMETER );
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -56,9 +56,9 @@ public class MariaDBSqlAstTranslator<T extends JdbcOperation> extends AbstractSq
|
|||
public void visitBinaryArithmeticExpression(BinaryArithmeticExpression arithmeticExpression) {
|
||||
if ( isIntegerDivisionEmulationRequired( arithmeticExpression ) ) {
|
||||
appendSql( OPEN_PARENTHESIS );
|
||||
arithmeticExpression.getLeftHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getLeftHandOperand() );
|
||||
appendSql( " div " );
|
||||
arithmeticExpression.getRightHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getRightHandOperand() );
|
||||
appendSql( CLOSE_PARENTHESIS );
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -106,9 +106,9 @@ public class MySQLSqlAstTranslator<T extends JdbcOperation> extends AbstractSqlA
|
|||
public void visitBinaryArithmeticExpression(BinaryArithmeticExpression arithmeticExpression) {
|
||||
if ( isIntegerDivisionEmulationRequired( arithmeticExpression ) ) {
|
||||
appendSql( OPEN_PARENTHESIS );
|
||||
arithmeticExpression.getLeftHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getLeftHandOperand() );
|
||||
appendSql( " div " );
|
||||
arithmeticExpression.getRightHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getRightHandOperand() );
|
||||
appendSql( CLOSE_PARENTHESIS );
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -328,9 +328,9 @@ public class PostgreSQLSqlAstTranslator<T extends JdbcOperation> extends SqlAstT
|
|||
@Override
|
||||
public void visitBinaryArithmeticExpression(BinaryArithmeticExpression arithmeticExpression) {
|
||||
appendSql( OPEN_PARENTHESIS );
|
||||
arithmeticExpression.getLeftHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getLeftHandOperand() );
|
||||
appendSql( arithmeticExpression.getOperator().getOperatorSqlTextString() );
|
||||
arithmeticExpression.getRightHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getRightHandOperand() );
|
||||
appendSql( CLOSE_PARENTHESIS );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -492,9 +492,9 @@ public class SQLServerSqlAstTranslator<T extends JdbcOperation> extends SqlAstTr
|
|||
@Override
|
||||
public void visitBinaryArithmeticExpression(BinaryArithmeticExpression arithmeticExpression) {
|
||||
appendSql( OPEN_PARENTHESIS );
|
||||
arithmeticExpression.getLeftHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getLeftHandOperand() );
|
||||
appendSql( arithmeticExpression.getOperator().getOperatorSqlTextString() );
|
||||
arithmeticExpression.getRightHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getRightHandOperand() );
|
||||
appendSql( CLOSE_PARENTHESIS );
|
||||
}
|
||||
|
||||
|
|
|
@ -443,9 +443,9 @@ public class SybaseASESqlAstTranslator<T extends JdbcOperation> extends Abstract
|
|||
@Override
|
||||
public void visitBinaryArithmeticExpression(BinaryArithmeticExpression arithmeticExpression) {
|
||||
appendSql( OPEN_PARENTHESIS );
|
||||
arithmeticExpression.getLeftHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getLeftHandOperand() );
|
||||
appendSql( arithmeticExpression.getOperator().getOperatorSqlTextString() );
|
||||
arithmeticExpression.getRightHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getRightHandOperand() );
|
||||
appendSql( CLOSE_PARENTHESIS );
|
||||
}
|
||||
|
||||
|
|
|
@ -241,9 +241,9 @@ public class SybaseSqlAstTranslator<T extends JdbcOperation> extends AbstractSql
|
|||
@Override
|
||||
public void visitBinaryArithmeticExpression(BinaryArithmeticExpression arithmeticExpression) {
|
||||
appendSql( OPEN_PARENTHESIS );
|
||||
arithmeticExpression.getLeftHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getLeftHandOperand() );
|
||||
appendSql( arithmeticExpression.getOperator().getOperatorSqlTextString() );
|
||||
arithmeticExpression.getRightHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getRightHandOperand() );
|
||||
appendSql( CLOSE_PARENTHESIS );
|
||||
}
|
||||
|
||||
|
|
|
@ -59,9 +59,9 @@ public class TiDBSqlAstTranslator<T extends JdbcOperation> extends AbstractSqlAs
|
|||
public void visitBinaryArithmeticExpression(BinaryArithmeticExpression arithmeticExpression) {
|
||||
if ( isIntegerDivisionEmulationRequired( arithmeticExpression ) ) {
|
||||
appendSql( OPEN_PARENTHESIS );
|
||||
arithmeticExpression.getLeftHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getLeftHandOperand() );
|
||||
appendSql( " div " );
|
||||
arithmeticExpression.getRightHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getRightHandOperand() );
|
||||
appendSql( CLOSE_PARENTHESIS );
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -7190,20 +7190,24 @@ public abstract class AbstractSqlAstTranslator<T extends JdbcOperation> implemen
|
|||
if ( operator == BinaryArithmeticOperator.MODULO ) {
|
||||
append( "mod" );
|
||||
appendSql( OPEN_PARENTHESIS );
|
||||
arithmeticExpression.getLeftHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getLeftHandOperand() );
|
||||
appendSql( ',' );
|
||||
arithmeticExpression.getRightHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getRightHandOperand() );
|
||||
appendSql( CLOSE_PARENTHESIS );
|
||||
}
|
||||
else {
|
||||
appendSql( OPEN_PARENTHESIS );
|
||||
arithmeticExpression.getLeftHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getLeftHandOperand() );
|
||||
appendSql( arithmeticExpression.getOperator().getOperatorSqlTextString() );
|
||||
arithmeticExpression.getRightHandOperand().accept( this );
|
||||
visitArithmeticOperand( arithmeticExpression.getRightHandOperand() );
|
||||
appendSql( CLOSE_PARENTHESIS );
|
||||
}
|
||||
}
|
||||
|
||||
protected void visitArithmeticOperand(Expression expression) {
|
||||
expression.accept( this );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitDuration(Duration duration) {
|
||||
duration.getMagnitude().accept( this );
|
||||
|
|
|
@ -8,12 +8,13 @@ package org.hibernate.orm.test.hql;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
import org.hibernate.dialect.PostgreSQLDialect;
|
||||
import org.hibernate.query.criteria.HibernateCriteriaBuilder;
|
||||
import org.hibernate.query.criteria.JpaCriteriaQuery;
|
||||
import org.hibernate.query.criteria.JpaRoot;
|
||||
|
||||
import org.hibernate.testing.SkipForDialect;
|
||||
import org.hibernate.testing.TestForIssue;
|
||||
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
|
||||
import org.hibernate.testing.orm.junit.JiraKey;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
|
@ -24,6 +25,7 @@ import jakarta.persistence.Id;
|
|||
import jakarta.persistence.TypedQuery;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.hasItem;
|
||||
import static org.hamcrest.CoreMatchers.is;
|
||||
import static org.hibernate.testing.transaction.TransactionUtil.doInHibernate;
|
||||
import static org.junit.Assert.assertThat;
|
||||
|
||||
|
@ -41,15 +43,22 @@ public class InferenceTest extends BaseCoreFunctionalTestCase {
|
|||
};
|
||||
}
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
doInHibernate( this::sessionFactory, session -> {
|
||||
person = new Person();
|
||||
person.setName("Johannes");
|
||||
person.setSurname("Buehler");
|
||||
session.persist(person);
|
||||
} );
|
||||
}
|
||||
@Before
|
||||
public void setUp() {
|
||||
doInHibernate( this::sessionFactory, session -> {
|
||||
person = new Person();
|
||||
person.setName( "Johannes" );
|
||||
person.setSurname( "Buehler" );
|
||||
session.persist( person );
|
||||
} );
|
||||
}
|
||||
|
||||
@After
|
||||
public void cleanUp() {
|
||||
doInHibernate( this::sessionFactory, session -> {
|
||||
session.createMutationQuery( "delete from Person" ).executeUpdate();
|
||||
} );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBinaryArithmeticInference() {
|
||||
|
@ -72,6 +81,19 @@ public class InferenceTest extends BaseCoreFunctionalTestCase {
|
|||
|
||||
}
|
||||
|
||||
@Test
|
||||
@JiraKey("HHH-18046")
|
||||
public void testBinaryArithmeticParameterInference() {
|
||||
doInHibernate( this::sessionFactory, session -> {
|
||||
HibernateCriteriaBuilder cb = session.getCriteriaBuilder();
|
||||
JpaCriteriaQuery<Double> cq = cb.createQuery( Double.class );
|
||||
JpaRoot<Person> root = cq.from( Person.class );
|
||||
cq.select( cb.toDouble( cb.prod( root.get( "id" ), 0.5f ) ) );
|
||||
Double result = session.createQuery( cq ).getSingleResult();
|
||||
assertThat( result, is( person.getId() * 0.5d ) );
|
||||
} );
|
||||
}
|
||||
|
||||
@Entity(name = "Person")
|
||||
public static class Person {
|
||||
|
||||
|
|
Loading…
Reference in New Issue