We now support querying, updating, sorting and projecting embeddables by resolving these to their individual columns.
Closes#2011
Original pull request: #2114
Aggregate references must be valid on their own and a null reference would represent a broken reference as we consider null identifiers as transient.
Closes#2104
Simplify JdbcArrayColumns from a dialect. Simplify DataAccessStrategyFactory creation. Remove superfluous overrides.
See #687
Original pull request: #1704
Consistently configure components using JdbcAggregateOperations. Reorder methods, refine dependency lookups. Refine JdbcAggregateTemplate dependency setup for easier object creation.
Extend tests. Refine bean names to provide naming hints for easier bean lookup in case multiple beans are registered for the same type.
See #687
Original pull request: #1704
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