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