use of org.hibernate.sql.ast.tree.expression.CastTarget in project hibernate-orm by hibernate.
the class AbstractSqlAstTranslator method renderCasted.
protected void renderCasted(Expression expression) {
final List<SqlAstNode> arguments = new ArrayList<>(2);
arguments.add(expression);
if (expression instanceof SqlTypedMappingJdbcParameter) {
final SqlTypedMappingJdbcParameter parameter = (SqlTypedMappingJdbcParameter) expression;
final SqlTypedMapping sqlTypedMapping = parameter.getSqlTypedMapping();
arguments.add(new CastTarget(parameter.getJdbcMapping(), sqlTypedMapping.getColumnDefinition(), sqlTypedMapping.getLength(), sqlTypedMapping.getPrecision(), sqlTypedMapping.getScale()));
} else {
arguments.add(new CastTarget(expression.getExpressionType().getJdbcMappings().get(0)));
}
castFunction().render(this, arguments, this);
}
use of org.hibernate.sql.ast.tree.expression.CastTarget in project hibernate-orm by hibernate.
the class CastFunction method render.
@Override
public void render(SqlAppender sqlAppender, List<? extends SqlAstNode> arguments, SqlAstTranslator<?> walker) {
final Expression source = (Expression) arguments.get(0);
final JdbcMapping sourceMapping = source.getExpressionType().getJdbcMappings().get(0);
final CastType sourceType = getCastType(sourceMapping);
final CastTarget castTarget = (CastTarget) arguments.get(1);
final JdbcMapping targetJdbcMapping = castTarget.getExpressionType().getJdbcMappings().get(0);
final CastType targetType = getCastType(targetJdbcMapping);
String cast = dialect.castPattern(sourceType, targetType);
new PatternRenderer(cast).render(sqlAppender, arguments, walker);
}
Aggregations