![]() |
VOOZH | about |
This guide discusses migration to Hibernate ORM version 6.4. For migration from earlier versions, see any other pertinent migration guides as well.
6.4 adds support for soft deletes, using the new @SoftDelete annotation.
See the User Guide for details.
In previous versions, support for soft-deletes was somewhat implementable using
a combination of any or all of event-listeners, filters, @Where, etc.
Applications using such implementations are encouraged to switch.
The CurrentTenantIdentifierResolver and MultiTenantConnectionProvider SPIs were generified to support custom tenant identifier types.
Both types now accept a type parameter that represents the tenant identifier type.
Methods that were accepting or returning a tenant identifier value of type String were changed to use the type variable.
Applications can migrate by specifying the type parameter <String> when extending CurrentTenantIdentifierResolver
or one of the MultiTenantConnectionProvider subtypes.
IdGeneratorStrategyInterpreter has been deprecated since 6.0 and has been removed to simplify id generator internals.
FunctionRenderingSupportThe FunctionRenderingSupport interface was deprecated for removal in favor of the new FunctionRenderer interface.
FunctionRenderer extends FunctionRenderingSupport, so switching to the new type should not be a big deal.
Classes the previously implemented the FunctionRenderingSupport interface should switch to implement FunctionRenderer
and the signature of the implemented render(SqlAppender, List, SqlAstTranslator) method has to be changed to
render(SqlAppender, List, ReturnableType, SqlAstTranslator) i.e. add ReturnableType as second last argument.
The newly passed ReturnableType argument allows the rendering process to consider the resolved function result type
during rendering, which is common for certain array specific functions, especially for Oracle.
Note that the deprecation also affects some methods/constructors of the SelfRenderingSqlAstExpression type hierarchy,
which were previously accepting/returning a FunctionRenderingSupport. Constructors that accept a FunctionRenderer
have been added to:
SelfRenderingSqmFunction
SelfRenderingSqmWindowFunction
SelfRenderingSqmAggregateFunction
SelfRenderingSqmOrderedSetAggregateFunction
SelfRenderingFunctionSqlAstExpression
SelfRenderingWindowFunctionSqlAstExpression
SelfRenderingAggregateFunctionSqlAstExpression
SelfRenderingOrderedSetAggregateFunctionSqlAstExpression
In addition, the SelfRenderingSqmFunction.getRenderingSupport() method was deprecated in favor of the new SelfRenderingSqmFunction.getFunctionRenderer() method.
Finally, the SelfRenderingFunctionSqlAstExpression.getRenderer() method was deprecated in favor of the new SelfRenderingFunctionSqlAstExpression.getFunctionRenderer() method.
Please also do have a look at the Supported Dialects document to check for potential upgrades to the minimum version of the databases underpinning the dialects that Hibernate currently supports.
Previous versions of Hibernate silently ignored annotations @GeneratedValue applied to non identifier fields.
E.g.
@Entity
class Entity{
@Id
Integer id,
@GeneratedValue // Ignored in Hibernate versions < 6.4, since 6.4 an AnnotationException is thrown
String name;
}
From 6.4 this mapping is not allowed anymore and an AnnotationException will be raised.