The new default is to take `@Table` annotations into account.
The behaviour can be configured by setting the `foreignKeyNaming` property on the `RelationalMappingContext`.
Closes#1162
See #1147
Original pull request: #1324.
The default version is the behavior that existed so far:
The back reference is the table name as generated by the `NamingStrategy` without taking `@Table` annotations into account.
The new alternative is to take `@Table` into account.
The behavior can be configured by setting the `foreignKeyNaming` property on the `RelationalMappingContext`.
Closes#1161Closes#1147
Original pull request: #1324.
You may now annotate properties of the aggregate root with `@InsertOnlyProperty`.
Properties annotated in such way will be written to the database only during insert operations, but they will not be updated afterwards.
Closes#637
Original pull request #1327
Modifying queries are executed directly against the database.
No events or callbacks get called.
Therefore also fields with auditing annotations do not get updated if they don't get updated in the annotated query.
Closes#970
The `@ReadOnlyProperty` annotation is now honoured for references to entities or collections of entities.
For tables mapped to such annotated references, no insert, delete or update statements will be created.
The user has to maintain that data through some other means.
These could be triggers or external process or `ON DELETE CASCADE` configuration in the database schema.
Closes#1249
Original pull request #1250
We now check in all places where we optionally use the Id property that an entity actually has an Id property and fall back leniently if the entity doesn't have an identifier property.
Also, we use IdentifierAccessor consistently if the property is an identifier property.
See #711
We now use reflection to call RowMetadata.getColumnMetadatas to avoid NoSuchMethodError when using R2DBC 0.9 as the return type has changed in newer R2DBC versions.
Closes#699
We now unwrap Parameter objects containing type and value for bind parameters when binding these from within a PreparedOperation to a statement.
PreparedOperation objects are expected to use low-level R2DBC API (bind, bindNull) instead of using the Parameter abstraction. Previously, we tried to bind Parameter objects to R2DBC Statements and that has failed as drivers cannot encode Spring's Pararameter type.
Closes#694
Remove unused imports. Use more explicit lambda parameter naming.
Also, adopt tests to changed Spring Data Relational SQL generation.
Original pull request: #690.
See #689