If an entity has a long (or Long) @Version field
A query like the following:
will lead to the following Assertion:
Changing the type of the optimisticVersion field to int/Integer allows to workaround the issue. I have tracked down the problem to the following code in BaseSqmToSqlAstConverter.addVersionedAssignment(...):
1 is an Integer whereas versionType.getJdbcMapping() is a LongJavaType, explaining why the assertions fails in the QueryLiteral constructor. The assertion should probably be relaxed to take into account that an int can be promoted to a long. Or alternatively something like in the caller : versionType.getJavaTypeClass() == Long.class ? new QueryLiteral<>( 1L, versionType ) : new QueryLiteral<>( 1, versionType ) The same issue may happen with other primitive types supporting promotion. |