Skip to content

Commit 795c7af

Browse files
mbelladebeikov
authored andcommitted
HHH-18709 Use path to infer criteria value-bind parameter type on set
1 parent 3857a91 commit 795c7af

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
@@ -183,7 +183,9 @@ public <Y> SqmUpdateStatement<T> set(SingularAttribute<? super T, Y> attribute,
183183

184184
@Override
185185
public <Y, X extends Y> SqmUpdateStatement<T> set(Path<Y> attribute, X value) {
186-
applyAssignment( (SqmPath<Y>) attribute, (SqmExpression<? extends Y>) nodeBuilder().value( value ) );
186+
final SqmCriteriaNodeBuilder nodeBuilder = (SqmCriteriaNodeBuilder) nodeBuilder();
187+
final SqmPath<Y> sqmAttribute = (SqmPath<Y>) attribute;
188+
applyAssignment( sqmAttribute, nodeBuilder.value( value, sqmAttribute ) );
187189
return this;
188190
}
189191

@@ -195,15 +197,15 @@ public <Y> SqmUpdateStatement<T> set(Path<Y> attribute, Expression<? extends Y>
195197

196198
@Override @SuppressWarnings({"rawtypes", "unchecked"})
197199
public SqmUpdateStatement<T> set(String attributeName, Object value) {
198-
final SqmPath sqmPath = getTarget().get(attributeName);
200+
final SqmPath sqmPath = getTarget().get( attributeName );
199201
final SqmExpression expression;
200202
if ( value instanceof SqmExpression ) {
201203
expression = (SqmExpression) value;
202204
}
203205
else {
204-
expression = (SqmExpression) nodeBuilder().value( value );
206+
final SqmCriteriaNodeBuilder nodeBuilder = (SqmCriteriaNodeBuilder) nodeBuilder();
207+
expression = nodeBuilder.value( value, sqmPath );
205208
}
206-
assertAssignable( null, sqmPath, expression, nodeBuilder().getSessionFactory() );
207209
applyAssignment( sqmPath, expression );
208210
return this;
209211
}

0 commit comments

Comments
 (0)