`@Where` and `@Filter` fragments are now fully handled as AST - each fragment gets its own Predicate instance.
Some more work coming to clean up methods we no longer use which require the old String-manip approach.
`@Where` and `@Filter` fragments are now fully handled as AST - each fragment gets its own Predicate instance.
Some more work coming to clean up methods we no longer use which require the old String-manip approach.
`@Where` and `@Filter` fragments are now fully handled as AST - each fragment gets its own Predicate instance.
Some more work coming to clean up methods we no longer use which require the old String-manip approach.
Next iteration where `@Where` fragments generate AST one or more `WhereFilterPredicate` instances.
At the moment, `@Filter` fragments are collected together using the existing String-manipulation style and still collected into a single `FilterPredicate`. Next step is to make that more AST-centric and hopefully get rid of the String-manip-based methods
add Length class with useful constant values
well-defined mappings for "long" varchar/varbinary types
make LONGVARCHAR a synonym for VARCHAR with length=LONG32
make LONGVARBINARY a synonym for VARBINARY with length=LONG32
add Dialect.getMaxVarcharLength() + friends
make schema validator ignore the differences between string types
there is a problem with this approach: the user now gets unchecked
warnings since we've recently filled in the type args of the params
of some methods of Query and NativeQuery
but it's very hard to see how to fix the problem without breaking
compatibility
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