Skip to content

Commit d433133

Browse files
committed
HHH-18709 Use path to infer criteria value-bind parameter type on set
1 parent 2fa1765 commit d433133

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

hibernate-core/src/main/java/org/hibernate/query/sqm/tree/update/SqmUpdateStatement.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,9 @@ public <Y> SqmUpdateStatement<T> set(SingularAttribute<? super T, Y> attribute,
180180

181181
@Override
182182
public <Y, X extends Y> SqmUpdateStatement<T> set(Path<Y> attribute, X value) {
183-
applyAssignment( (SqmPath<Y>) attribute, (SqmExpression<? extends Y>) nodeBuilder().value( value ) );
183+
final SqmCriteriaNodeBuilder nodeBuilder = (SqmCriteriaNodeBuilder) nodeBuilder();
184+
final SqmPath<Y> sqmAttribute = (SqmPath<Y>) attribute;
185+
applyAssignment( sqmAttribute, nodeBuilder.value( value, sqmAttribute ) );
184186
return this;
185187
}
186188

@@ -192,15 +194,15 @@ public <Y> SqmUpdateStatement<T> set(Path<Y> attribute, Expression<? extends Y>
192194

193195
@Override @SuppressWarnings({"rawtypes", "unchecked"})
194196
public SqmUpdateStatement<T> set(String attributeName, Object value) {
195-
final SqmPath sqmPath = getTarget().get(attributeName);
197+
final SqmPath sqmPath = getTarget().get( attributeName );
196198
final SqmExpression expression;
197199
if ( value instanceof SqmExpression ) {
198200
expression = (SqmExpression) value;
199201
}
200202
else {
201-
expression = (SqmExpression) nodeBuilder().value( value );
203+
final SqmCriteriaNodeBuilder nodeBuilder = (SqmCriteriaNodeBuilder) nodeBuilder();
204+
expression = nodeBuilder.value( value, sqmPath );
202205
}
203-
assertAssignable( null, sqmPath, expression, nodeBuilder() );
204206
applyAssignment( sqmPath, expression );
205207
return this;
206208
}

0 commit comments

Comments
 (0)