Switch to value expressions to allow property-placeholder usage. Add tests. Add missing support for MappedCollection.idColumn() expressions.
See #1524
Original pull request: #2077
The target type for the conversion of the complete collection gets adapted when a custom conversion was applied to the elements.
Also `JdbcValue` elements as a result of a custom conversion get unwrapped.
Closes#2078
Original pull request: #2081
Use Standard Exception handling for JDBC SQLException. Introduce easier and consistent mechanism to construct JdbcCustomConversions. Add tests and fix mocking setup. Fix typos.
See #1828
Original pull request #2062
Restructured reading conversion process into:
- converting technology base types (JDBC Arrays).
- standard and custom conversions.
- module specific conversions (AggregateReference).
Closes#1828
Original pull request #2062
TypeInformation.OBJECT must not be compared by reference since TypeInformation instances come form a LRU cache and if TypeInformation.OBJECT gets evicted future instances might be equal, but won't have the same reference.
Closes#2083
Introduce factory methods to create mapping contexts that use quoting and that use plain identifiers for easier creation of the correct mapping context.
See #1993
Original pull request #2066
Most tests got fixed by reverting to non quoted identifiers for the test.
Interesting things that became obvious:
- SpEL expressions get the transformed (e.g. upper case) and quoted table name!? See TableNameQueryPreprocessorUnitTests and
SqlInspectingR2dbcRepositoryUnitTests
Closes#1993
Original pull request #2066
Entities may be annotated with `@Id` and `@Embedded`, resulting in a composite id on the database side.
The full embedded entity is considered the id, and therefore the check for determining if an aggregate is considered a new aggregate requiring an insert or an existing one, asking for an update is based on that entity, not its elements.
Most use cases will require a custom `BeforeConvertCallback` to set the id for new aggregate.
For an entity with `@Embedded` id, the back reference used in tables for referenced entities consists of multiple columns, each named by a concatenation of <table-name> + `_` + <column-name>.
E.g. the back reference to a `Person` entity, with a composite id with the properties `firstName` and `lastName` will consist of the two columns `PERSON_FIRST_NAME` and `PERSON_LAST_NAME`.
This holds for directly referenced entities as well as `List`, `Set` and `Map`.
Closes#574
Original pull request #1957
If no columns are given, all columns are selected by default.
If columns are specified, only these are selected.
Joins normally triggered by columns from 1:1 relationships are not implemented, and the corresponding columns don't get loaded and can't be specified in a query.
Limiting columns is not supported for single query loading.
Closes#1803
Original pull request: #1967
Overriding the proper variant of EntityInformation is now possible because we no longer utilize a private method in addition to the public one leading to partial customization of EntityInformation.
Closes#2053