-
Notifications
You must be signed in to change notification settings - Fork 3k
Description
Description
Hibernate ORM 6 changes a few defaults regarding database schemas, and that could be a problem for pre-existing applications that migrate to Quarkus 3 + ORM 6.
We need to add a unique, per-PU property that would switch several configuration properties to their "legacy" value so that Hibernate ORM 6 continues to work with those "legacy" database schemas.
Ideally, those configuration properties should be overrideable through quarkus.hibernate-orm.unsupported-properties
, so that people can iterate when migrating.
The exact list of properties set by that will be automatically overridden needs to be documented somewhere; though I believe a link to the source would be enough, if the source is a single class that is focused only on this overriding and isn't overly complex.
Implementation ideas
E.g.:
quarkus.hibernate-orm.schema.compatibility = 5.6
Limitations
For now, we will have a global property for all persistence units but that seems like an acceptable limitation.
This compatibility property is specifically about the database schema. It doesn't improve the compatibility for annotations and API changes.
List of compatibility issues
- Sequences: - we need to set it to
legacy
to usehibernate_sequence
by default - Duration mapping changes
- UUID mapping changes: AND mariadb AND sql-server
- Instant mapping changes
- Basic array/collection mapping: we are still undecided of if we want to do something here. It is not high priority: people can annotate their properties to work around the problem and it should not be very common
- Enum mapping changes - Christian said it should be backward compatible
- Datatype for enums: Christian said it should be backward compatible
- Timezone and offset storage: Apparently not much to do here but might require some clarifications
- Automatic mapping of configured deprecated Hibernate ORM Dialects to the ORM 6 dialect + version #31588
Metadata
Metadata
Assignees
Labels
Type
Projects
Status