HHH-14718 - Drop deprecated generator implementations;
HHH-14959 - Drop IdentifierGeneratorFactory as a Service;
HHH-14960 - Add @GeneratorType for better custom generator config;
HHH-14496 - Deprecate (or drop) IdGeneratorStrategyInterpreter;
HHH-14961 - Deprecate (or drop) IdentifierGeneratorStrategyProvider;
HHH-14962 - Delay actual creation of IdentifierGenerator instances as late as possible
Add `GenerationTypeStrategy` and `GenerationTypeStrategyRegistration`;
deprecate org.hibernate.jpa.spi.IdentifierGeneratorStrategyProvider
HHH-14718 - Drop deprecated generator implementations;
HHH-14959 - Drop IdentifierGeneratorFactory as a Service;
HHH-14960 - Add @GeneratorType for better custom generator config
Fixed CustomGeneratorTests failure on databases which do not support sequences
HHH-14718 - Drop deprecated generator implementations;
HHH-14959 - Drop IdentifierGeneratorFactory as a Service;
HHH-14960 - Add @GeneratorType for better custom generator config
org.hibernate.id.factory.spi.StandardGenerator
HHH-14718 - Drop deprecated generator implementations;
HHH-14959 - Drop IdentifierGeneratorFactory as a Service;
HHH-14960 - Add @GeneratorType for better custom generator config
HHH-14718 - Drop deprecated generator implementations;
HHH-14959 - Drop IdentifierGeneratorFactory as a Service;
HHH-14960 - Add @GeneratorType for better custom generator config
* Fix insert handling with respect to version, discriminator and generated identifier insertion
* Introduce SqmMultiTableInsertStrategy to handle multi-table inserts
* Introduce the notion of an "entity table" similar to the "id table" to handle multi-table insertions
* Implement table based and cte based multi-table insertion to support all dialects
* Implement identifier generator optimizer support for multi-table insert
* Fix validation of insert target paths against select item types
* Fix some DML validations
* Implement over-clause support in SQL AST
* Fix multi-valued filter parameter support
This is necessary if we want the default catalog/schema to take
precedence, since the default catalog/schema is applied late,
on schema management tool or session factory creation.
- added log message when this condition occurs
- tried adding a `LoggerInspectionRule` based assertion to the test, but found that that rule is unfortunately very dependent on the message actually being logged
* Revert "HHH-14857 - Deprecations in preparation for 6"
This reverts commit 91e29358be.
* Revert "HHH-14857 - Deprecations in preparation for 6"
This reverts commit e4b56b9271.
HHH-14951 - Add @EmbeddableRepresentationStrategy
Prep work for `@EmbeddableRepresentationStrategy` - mostly move things from spi package to api, generally all marked `@Incubating`
HHH-14950 - Support mapping of embeddables with no setters (assuming a custom instantiator or repo-strategy is used)
Tests illustrating that HHH-14950 does indeed happen
- shared `#finishInitialization` handling for `VirtualIdEmbeddable` and `IdClassEmbeddable`
note: was not yet able to get that working with `EmbeddableMappingType`
- clean up ComponentType, esp wrt its use of ComponentTuplizer
Still need to
- integrate embedded forms. `VirtualIdEmbeddable` does not really need it as it can use the id-mapping itself as the embedded form. But `IdClassEmbedded` should really be integrated
- integrate `VirtualKeyEmbeddable` and `VirtualKeyEmbedded` for use as inverse composite fks
- ability to use the containing composite owner as the parent of a composite (legacy behavior is to always use the "first" entity
- Clean up Component Type, removing as many calls to its tuplizer as possible atm
- Clean up ManagedMappingType, EntityPersister, etc - mainly work around getting and setting value(s)
Still need to
- integrate embedded forms. `VirtualIdEmbeddable` does not really need it as it can use the id-mapping itself as the embedded form. But `IdClassEmbedded` should really be integrated
- integrate `VirtualKeyEmbeddable` and `VirtualKeyEmbedded` for use as inverse composite fks
- share `#finishInit` handling for `EmbeddableMappingType`, `VirtualIdEmbeddable` and `IdClassEmbeddable`
- ability to use the containing composite owner as the parent of a composite (legacy behavior is to always use the "first" entity
- clean up ComponentType, esp wrt its use of ComponentTuplizer
- Clean up Component Type, removing as many calls to its tuplizer as possible atm
- Clean up ManagedMappingType, EntityPersister, etc - mainly work around getting and setting value(s)
Still need to
- integrate embedded forms. `VirtualIdEmbeddable` does not really need it as it can use the id-mapping itself as the embedded form. But `IdClassEmbedded` should really be integrated
- integrate `VirtualKeyEmbeddable` and `VirtualKeyEmbedded` for use as inverse composite fks
- share `#finishInit` handling for `EmbeddableMappingType`, `VirtualIdEmbeddable` and `IdClassEmbeddable`
- ability to use the containing composite owner as the parent of a composite (legacy behavior is to always use the "first" entity
- clean up ComponentType, esp wrt its use of ComponentTuplizer
Move all component instantiations to use the new mapping model EmbeddableInstantiator
Still need to
- integrate embedded forms. `VirtualIdEmbeddable` does not really need it as it can use the id-mapping itself as the embedded form. But `IdClassEmbedded` should really be integrated
- integrate `VirtualKeyEmbeddable` and `VirtualKeyEmbedded` for use as inverse composite fks
- share `#finishInit` handling for `EmbeddableMappingType`, `VirtualIdEmbeddable` and `IdClassEmbeddable`
- ability to use the containing composite owner as the parent of a composite (legacy behavior is to always use the "first" entity
- clean up ComponentType, esp wrt its use of ComponentTuplizer
EmbeddableInitializer fully uses EmbeddableInstantiator and value injection
Still need to
- integrate EmbeddableInstantiator work (ComponentType/ComponentTuplizer)
- integrate embedded forms. `VirtualIdEmbeddable` does not really need it as it can use the id-mapping itself as the embedded form. But `IdClassEmbedded` should really be integrated
- integrate `VirtualKeyEmbeddable` and `VirtualKeyEmbedded` for use as inverse composite fks
- share `#finishInit` handling for `EmbeddableMappingType`, `VirtualIdEmbeddable` and `IdClassEmbeddable`
- ability to use the containing composite owner as the parent of a composite (legacy behavior is to always use the "first" entity
EmbeddableInitializer fully uses EmbeddableInstantiator and value injection
Still need to
- integrate EmbeddableInstantiator work (ComponentType/ComponentTuplizer)
- integrate embedded forms. `VirtualIdEmbeddable` does not really need it as it can use the id-mapping itself as the embedded form. But `IdClassEmbedded` should really be integrated
- integrate `VirtualKeyEmbeddable` and `VirtualKeyEmbedded` for use as inverse composite fks
- share `#finishInit` handling for `EmbeddableMappingType`, `VirtualIdEmbeddable` and `IdClassEmbeddable`
- ability to use the containing composite owner as the parent of a composite (legacy behavior is to always use the "first" entity
Prep work for EmbeddableInstantiator - initializer
Still need to
- integrate EmbeddableInstantiator work
- integrate embedded forms. `VirtualIdEmbeddable` does not really need it as it can use the id-mapping itself as the embedded form. But `IdClassEmbedded` should really be integrated
- integrate `VirtualKeyEmbeddable` and `VirtualKeyEmbedded` for use as inverse composite fks
- share `#finishInit` handling for `EmbeddableMappingType`, `VirtualIdEmbeddable` and `IdClassEmbeddable`
- ability to use the containing composite owner as the parent of a composite (legacy behavior is to always use the "first" entity
Prep work for EmbeddableInstantiator - initializer
Still need to
- integrate EmbeddableInstantiator work
- integrate embedded forms. `VirtualIdEmbeddable` does not really need it as it can use the id-mapping itself as the embedded form. But `IdClassEmbedded` should really be integrated
- integrate `VirtualKeyEmbeddable` and `VirtualKeyEmbedded` for use as inverse composite fks
- share `#finishInit` handling for `EmbeddableMappingType`, `VirtualIdEmbeddable` and `IdClassEmbeddable`
- ability to use the containing composite owner as the parent of a composite (legacy behavior is to always use the "first" entity
Prep work for EmbeddableInstantiator - initializer
Still need to
- integrate EmbeddableInstantiator work
- integrate embedded forms. `VirtualIdEmbeddable` does not really need it as it can use the id-mapping itself as the embedded form. But `IdClassEmbedded` should really be integrated
- integrate `VirtualKeyEmbeddable` and `VirtualKeyEmbedded` for use as inverse composite fks
- share `#finishInit` handling for `EmbeddableMappingType`, `VirtualIdEmbeddable` and `IdClassEmbeddable`
- ability to use the containing composite owner as the parent of a composite (legacy behavior is to always use the "first" entity
Prep work for EmbeddableInstantiator - initializer
Still need to
- integrate EmbeddableInstantiator work
- integrate embedded forms. `VirtualIdEmbeddable` does not really need it as it can use the id-mapping itself as the embedded form. But `IdClassEmbedded` should really be integrated
- integrate `VirtualKeyEmbeddable` and `VirtualKeyEmbedded` for use as inverse composite fks
- share `#finishInit` handling for `EmbeddableMappingType`, `VirtualIdEmbeddable` and `IdClassEmbeddable`
- ability to use the containing composite owner as the parent of a composite (legacy behavior is to always use the "first" entity
Prep work for EmbeddableInstantiator - initializer
Still need to
- integrate EmbeddableInstantiator work
- integrate embedded forms. `VirtualIdEmbeddable` does not really need it as it can use the id-mapping itself as the embedded form. But `IdClassEmbedded` should really be integrated
- integrate `VirtualKeyEmbeddable` and `VirtualKeyEmbedded` for use as inverse composite fks
- share `#finishInit` handling for `EmbeddableMappingType`, `VirtualIdEmbeddable` and `IdClassEmbeddable`
- ability to use the containing composite owner as the parent of a composite (legacy behavior is to always use the "first" entity
Prep work for EmbeddableInstantiator - initializer
Still need to
- integrate EmbeddableInstantiator work
- integrate embedded forms. `VirtualIdEmbeddable` does not really need it as it can use the id-mapping itself as the embedded form. But `IdClassEmbedded` should really be integrated
- integrate `VirtualKeyEmbeddable` and `VirtualKeyEmbedded` for use as inverse composite fks
- share `#finishInit` handling for `EmbeddableMappingType`, `VirtualIdEmbeddable` and `IdClassEmbeddable`
- ability to use the containing composite owner as the parent of a composite (legacy behavior is to always use the "first" entity
More clean-up (Tuplizers!!)
Mostly EntityTuplizer in this commit
Still need to
- integrate EmbeddableInstantiator work
- integrate embedded forms. `VirtualIdEmbeddable` does not really need it as it can use the id-mapping itself as the embedded form. But `IdClassEmbedded` should really be integrated
- integrate `VirtualKeyEmbeddable` and `VirtualKeyEmbedded` for use as inverse composite fks
- share `#finishInit` handling for `EmbeddableMappingType`, `VirtualIdEmbeddable` and `IdClassEmbeddable`
Clean-up
Still need to
- integrate EmbeddableInstantiator work
- integrate embedded forms. `VirtualIdEmbeddable` does not really need it as it can use the id-mapping itself as the embedded form. But `IdClassEmbedded` should really be integrated
- integrate `VirtualKeyEmbeddable` and `VirtualKeyEmbedded` for use as inverse composite fks
- share `#finishInit` handling for `EmbeddableMappingType`, `VirtualIdEmbeddable` and `IdClassEmbeddable`
EmbeddableInstantiator
Still need to
- integrate EmbeddableInstantiator work
- integrate embedded forms. `VirtualIdEmbeddable` does not really need it as it can use the id-mapping itself as the embedded form. But `IdClassEmbedded` should really be integrated
- integrate `VirtualKeyEmbeddable` and `VirtualKeyEmbedded` for use as inverse composite fks
- share `#finishInit` handling for `EmbeddableMappingType`, `VirtualIdEmbeddable` and `IdClassEmbeddable`
Added new form of `SqlExpressionResolver#createColumnReferenceKey`
Still need to
- integrate EmbeddableInstantiator work
- integrate embedded forms. `VirtualIdEmbeddable` does not really need it as it can use the id-mapping itself as the embedded form. But `IdClassEmbedded` should really be integrated
- integrate `VirtualKeyEmbeddable` and `VirtualKeyEmbedded` for use as inverse composite fks
- share `#finishInit` handling for `EmbeddableMappingType`, `VirtualIdEmbeddable` and `IdClassEmbeddable`
This 3rd commit cleans up some code
Still need to
- integrate EmbeddableInstantiator work
- integrate embedded forms. `VirtualIdEmbeddable` does not really need it as it can use the id-mapping itself as the embedded form. But `IdClassEmbedded` should really be integrated
- integrate `VirtualKeyEmbeddable` and `VirtualKeyEmbedded` for use as inverse composite fks
- share `#finishInit` handling for `EmbeddableMappingType`, `VirtualIdEmbeddable` and `IdClassEmbeddable`
This second commit renames `EmbeddableMappingType`
Still need to
- integrate EmbeddableInstantiator work
- integrate embedded forms. `VirtualIdEmbeddable` does not really need it as it can use the id-mapping itself as the embedded form. But `IdClassEmbedded` should really be integrated
- integrate `VirtualKeyEmbeddable` and `VirtualKeyEmbedded` for use as inverse composite fks
- share `#finishInit` handling for `EmbeddableMappingType`, `VirtualIdEmbeddable` and `IdClassEmbeddable`
This initial commit is scaled back - it only introduces the embeddable forms and supporting changes.
Still need to
- integrate EmbeddableInstantiator work
- integrate embedded forms. `VirtualIdEmbeddable` does not really need it as it can use the id-mapping itself as the embedded form. But `IdClassEmbedded` should really be integrated
- integrate `VirtualKeyEmbeddable` and `VirtualKeyEmbedded` for use as inverse composite fks
* Switch from the "expression" to "expressionOrPredicate" rule in the HQL grammar where it makes sense as required by some HQL tests
* Cleanup parser rule ordering to allow more keywords in the identifier rule
* Implement literal support for Ordering parser
* Add special AvgFunction as needed by H2, HSQL, DB2, SQL Server and Sybase that casts arguments to double if necessary
* Fix wrong deduplication of order by fragments in case a plural attribute is fetched multiple times
* Implement support for de-referencing any-valued mappings in HQL
* Avoid unnecessary entity subtypes in polymorphic splitted queries if a base type also matches the requested type
* Implement pagination support for polymorphic splitted queries
* Cleanup path part resolving by removing lots of duplicate code
* Aligh HQL parsing expectations to the expected behavior of 5.x
* Add method to `JavaType` that allows determining if a type is can be widened to another which is used for arithmetic type resolving
* Implement validations for fetch owner checking
* Fix issues with the id table creation due to lacking column lengths in the column DDL type
* Fix issues and add some optimizations related to multi-table delete handling
* Add the notion of a special "implicit" alias to avoid generating a unique alias for unaliased or implicit HQL joins
* Properly implement multiple bag fetch validation
* Make sure filter predicates are applied for all plural attribute joins
* Fix some issues with undecidable parameter type inference
* Fix some issues with negated SQM predicates not being converted to the proper SQL AST predicates
* Fix issues with qualifying DML target referencing columns
* Fix `is null` semantics for tuples referring to embeddable types
* Capture necessary details from JdbcValuesMetadata in the cached data to avoid executing a query on cache hit when types should be inferred
* Get rid of special CollectionPropertyNames and writeup a migration guide section for the replacements
* Remove deprecated *_CLASSLOADER from AvailableSettings
Signed-off-by: Jan Schatteman <jschatte@redhat.com>
* Remove deprecated HBM2DLL_CREATE_NAMESPACES and DEPRECATED_EXTRA_PHYSICAL_TABLE_TYPES from AvailableSettings
Signed-off-by: Jan Schatteman <jschatte@redhat.com>
* Remove deprecated and duplicated HBM2DDL_DB_NAME, HBM2DDL_DB_VERSION, HBM2DDL_DB_MAJOR_VERSION, HBM2DDL_DB_MINOR_VERSION from AvailableSettings
Signed-off-by: Jan Schatteman <jschatte@redhat.com>
* Remove deprecated ACQUIRE_CONNECTIONS and RELEASE_CONNECTIONS from AvailableSettings
Signed-off-by: Jan Schatteman <jschatte@redhat.com>
* Remove deprecated PROXOOL_PREFIX and PREFER_POOLED_VALUES_LO from AvailableSettings
Signed-off-by: Jan Schatteman <jschatte@redhat.com>
* Remodel `@MapKey` support to not create subqueries in the on-clause anymore
* Make sure the index table group is reused for the to-one association a `@MapKey` refers to
* Consistently register collection part table groups
* Implement support for FK optimization for EntityCollectionPart
* Implement parameter list expansion for native queries
* Fix empty subselect fetched collection initialization
* Implement support for nested table group joins to allow joins on the map-key
* Replace `getTableReference` with `resolveTableReference` where appropriate to distinguish which calls can cause table reference joins to be created
* Fix some table reference resolving issues with inverse embeddable model parts
* Use a Fetch for entity ids instead of a DomainResult
* Fix bidirectional fetching for collection initializtion
* Implement table reference join pruning for treat usages
* Implement strict JPA compliance for different parameter styles
* Ensure From nodes in Criteria are unique
* Add unique key support to DelayedEntityFetch
* Check if FetchParent is enhanced for lazy loading for DelayedEntityFetch
* Register entity instances under all possible EntityUniqueKey
* Introduce EntityJavaTypeDescriptor that implements equality based on object identity
Moved it back for now to the old location, since it fails with a
non-related error that will have to be looked at as soon as there is an
implementation for composite sub-types
Signed-off-by: Jan Schatteman <jschatte@redhat.com>
* Add FormatMapper for a pluggable JSON serialization and deserialization strategy
* Add native UUID type support for H2, Cockroach, PostgreSQL
* Add native INET type support for Cockroach, PostgreSQL
* Add native JSON type support for MySQL, Cockroach, PostgreSQL
* Add native INTERVAL SECOND type support for H2, Cockroach, PostgreSQL
* Add fallback JdbcTypes for new SqlTypes
* Register column types for new SqlTypes
* Add support for BasicTypeReference in TypedParameterValue
* Fix a lot of method signatures with respect to type parameter issues
* Fix CustomType, UserType and EnhancedUserType with respect to type parameters
* Get rid of StringRepresentableType and some other unused deprecated methods
The current StandardStack implementation is based on a LinkedList, which is well known to be a suboptimal choice; this should be switched to a lazily allocated ArrayDeque.
It just makes sense, since JpaMetamodel is Hibernate ORM's
extension of jakarta.persistence.metamodel.Metamodel,
and SessionFactory#getMetamodel() is Hibernate ORM's extension
of EntityManager#getMetamodel().
HHH-14865 - Re-work @Any and @ManyToAny support;
HHH-14863 - Compositional definition of basic value mappings;
HHH-14864 - Drop legacy Type-based annotations
* documentation work
* support for using most of the new mapping annotations related to basic and any mappings as meta-annotations
* support for `@Mutability` on AttributeConverter implementations
* additional tests in the User Guide's BitSet mapping Case Study
HHH-14865 - Re-work @Any and @ManyToAny support;
HHH-14863 - Compositional definition of basic value mappings;
HHH-14864 - Drop legacy Type-based annotations
layer in missed support for `@MapKeyClass` and `@ElementCollection#targetClass` in BasicValue resolution as part of BasicValueBinder handling
A simple unit test illustrating issue HHH-14820 : since Hibernate ORM 6
the custom NamedEnumUserType is only instantiated once (while there are
two enums configured with this type)
Also add special JdbcTypeDescriptor implementations that resolve the parameter type or use a VARBINARY on null values, as needed for some dialects, which register these descriptors
* Allow JdbcTypeDescriptor to resolve JavaTypeDescriptor also based on precision/scale to support resolving VARCHAR(1) to Character
* Implement support for rendering comments and hints for DML statements.
* Implement support for tuple transformer
* Apply type inference on SQM parameters and put coercion behind `isLoadByIdComplianceEnabled` consistently
* Implement native query result type validation
* Fix some temporal type related resolving issues
* Fix parameter validation issue
* Apply delayed fetch builders for implicit basic attributes for result set mappings
* Use resolved JdbcTypeDescriptor and column length/scale to resolve recommended JdbcTypeDescriptor
* Fix type resolving for composite path sources
* Make ManagedDomainType implement AllowableParameterType
* Make DiscriminatorSqmPathSource implement AllowableParameterType
* Fix some id-class related path source issues
SQL Server 2016 (13.x) and later support the `if exists` clause for most `drop` DDL statements. The new `SQLServer2016Dialect` dialect accounts for this and offers the advantage that no error messages get logged when using `hibernate.hbm2ddl.auto=create-drop`.
* Get rid of unnecessary whitespace and optional keywords in generated SQL
* Handle some type inference related issues with some databases requiring to render casted parameters in some situations
* Ensure SQM model is fully serializable
* Ensure JPA Criteria throws expected exceptions
* Make sure JPA Criteria implementations work properly
* Move jpa.test.callback and jpa.test.criteria packages
* Improve the reuse of SqmPath instances
* Get rid of many raw-types related warnings
* Make Predicate extend Expression and handle SQL rendering/emulation
* Support fetching SqmTuple as array
* Implement treat operator support
- use fetch/result as the distinction for whether to select Class / entity-name or the "underlying type" value for discriminator. The only time we'd have a DomainResult for the discriminator is for Query where the type is selected; all other times want the underlying type
1. Add CockroachDB192Dialect#getNameQualifierSupport and #buildIdentifierHelper.
2. Change semantics for AbstractInformationExtractorImpl#processIndexInfoResultSet
to be more friendly to subclasses.
- Handle discriminator as Fetch for entity ResultGraphNodes. This allows us to make the distinction about whether to handle the discriminator as `Class` or as its "underlying" type when selecting it. Fetches return the underlying type. DomainResults return `Class`, or String for entity-named entity mappings
- Handle discriminator as Fetch for entity ResultGraphNodes. This allows us to make the distinction about whether to handle the discriminator as `Class` or as its "underlying" type when selecting it. Fetches return the underlying type. DomainResults return `Class`, or String for entity-named entity mappings
- Handle discriminator as Fetch for entity ResultGraphNodes. This allows us to make the distinction about whether to handle the discriminator as `Class` or as its "underlying" type when selecting it. Fetches return the underlying type. DomainResults return `Class`, or String for entity-named entity mappings
- Handle discriminator as Fetch for entity ResultGraphNodes. This allows us to make the distinction about whether to handle the discriminator as `Class` or as its "underlying" type when selecting it. Fetches return the underlying type. DomainResults return `Class`, or String for entity-named entity mappings
- Handle discriminator as Fetch for entity ResultGraphNodes. This allows us to make the distinction about whether to handle the discriminator as `Class` or as its "underlying" type when selecting it. Fetches return the underlying type. DomainResults return `Class`, or String for entity-named entity mappings