318 Commits

Author SHA1 Message Date
Mark Paluch
cedaacad8d Extend license header copyright years to 2024.
See #1706
2024-01-02 09:24:35 +01:00
Mark Paluch
9178d3056a Fix tests after dependency upgrades.
See #1541
2023-07-04 14:40:41 +02:00
Jens Schauder
20e468021e Polishing.
See #1460
Original pull request #1521
2023-06-13 16:18:55 +02:00
Vincent Galloy
06943211b7 Fix Enum[] type conversion.
Since 3.0.5, Enum[] type are detect as "UNKNOWN"

Closes #1460
Original Pull request #1521
2023-06-13 16:18:54 +02:00
Mark Paluch
322ef006ee Adopt to Mockito 5.1 changes.
Closes #1424
2023-03-30 11:19:46 +02:00
Jens Schauder
1226ca9be6 Convert only contents of collections using StringBasedJdbcQuery.
Contents of Iterables that aren't collections will not be converted individually.

Closes #1343
Original pull request: #1356
2023-03-15 17:02:16 +01:00
Jens Schauder
9893884a54 Polishing.
Simplify test.

Original pull request: #1356
See #1343
2023-03-15 17:02:16 +01:00
Jens Schauder
26f2fb5812 Fixed Postgres scripts.
See #1406
See #1405
2023-02-14 11:05:25 +01:00
Mark Paluch
f3a7586db6 Polishing.
Simplify sanitizer. Add unit test.

See #1405
See #1406
Original pull request #1415
2023-01-26 09:41:06 +01:00
Jens Schauder
eff0c72126 SqlIdentifierParameterSource now sanitizes identifier names.
Closes #1405
See #1406
Original pull request #1415
2023-01-26 09:41:06 +01:00
Mikhail2048
e2422c2a83 Integration test added to demonstrate behavior when column names contain characters illegal for bind parameters.
See #1405
Related pull request #1406
Original pull request #1415
2023-01-26 09:41:06 +01:00
Jens Schauder
1ff403e174 Allow empty Iterable arguments in JdbcAggregateTemplate again.
This also affects repositories since they delegate to the template.

Closes #1401
2023-01-03 09:44:54 +01:00
Mark Paluch
5d3e737393 Extend license header copyright years to 2023.
See #1398
2023-01-02 09:50:19 +01:00
Mark Paluch
3b6c2f06ae Disable package cycle tests to unblock CI builds.
See #1366
2022-10-31 14:45:38 +01:00
Jens Schauder
58bf5566b6 Dependency tests are now based on ArchUnit.
Replaced ignored tests with exclusion of packages and classes.
Upgraded ArchUnit dependency to 1.0.0.

Closes #1354
2022-10-10 13:27:59 +02:00
Jens Schauder
6bdc7db24b Offer a proper replacement for NamingStrategy.INSTANCE.
Closes #1350
2022-10-07 16:24:47 +02:00
Mark Paluch
795e244511 Polishing.
Do not expose setForeignKeyNaming methods on NamingStrategy to make less assumptions about how a naming strategy gets implemented. Provide getRequiredLeafEntity method on PersistentPropertyPathExtension to reduce null and state assertion checks.

Refine getTableName/getQualifiedTableName approach to reduce API surface and avoid deprecations.

See #1147
Original pull request: #1324.
2022-10-07 09:17:27 +02:00
Jens Schauder
e7d32bbea2 Polishing.
See #1162
Original pull request: #1324.
2022-10-07 09:17:21 +02:00
Jens Schauder
d7f2a27ee9 Revised default behaviour for back reference naming.
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.
2022-10-07 09:17:15 +02:00
Jens Schauder
40446f9ca9 The back reference generation is now configurable.
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 #1161
Closes #1147
Original pull request: #1324.
2022-10-07 09:17:05 +02:00
Jens Schauder
004804aad8 Introduce @InsertOnlyProperty.
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
2022-10-06 12:54:33 +02:00
Mark Paluch
76ea47ab16 Deprecate mutability of DelegatingDataAccessStrategy.
See: #1315
Original pull request: #1324.
2022-10-05 15:34:11 +02:00
Jens Schauder
aef1e34f5e Drop superfluous class argument from delete methods in JdbcAggregateTemplate.
Closes: #1315
Original pull request: #1324.
2022-10-05 15:34:11 +02:00
Jens Schauder
01e98dc171 Polishing.
See: #1315
Original pull request: #1324.
2022-10-05 15:34:11 +02:00
Christopher Klein
9abaa5a911 Support for SpEL inside @Query annotations.
Constructs like the following work now.

```
@Query("select u from User u where u.firstname = :#{#customer.firstname}")
List<User> findUsersByCustomersFirstname(@Param("customer") Customer customer);
```

Closes #619
Original pull request #229
See https://spring.io/blog/2014/07/15/spel-support-in-spring-data-jpa-query-definitions
2022-09-30 12:27:46 +02:00
Jens Schauder
f326897950 Removed deprecations.
Removed deprecated API and usasage of deprecated API.

Closes #1340
2022-09-28 12:02:46 +02:00
Jens Schauder
98ef3df478 Polishing.
Original pull request #1338
See #1329
2022-09-26 14:22:06 +02:00
Hari Ohm Prasth Rajagopal
9b6570452c Avoid exception for empty criteria.
Code changes to check for both null and empty criteria before proceeding to where clause generation avoids exception.

Closes #1329
Original pull request #1338
2022-09-26 14:22:06 +02:00
Jens Schauder
0609df0ae7 Reenable quoting for SqlServerDialect.
Quoting is important since it allows use of keywords as names.
We do not change the letter casing.
In a default setup the database does not care since it is case-insensitive.
If configured to be case-sensitive it makes sense to pass on what ever letter casing there is, since you seem to care.

Closes #1216
See #914
2022-08-31 15:48:54 +02:00
Jens Schauder
7b1f680a26 Correct behavior of NOOP deletes to match the specification in CrudRepository.
Delete operations that receive a version attribute throw an `OptimisticFailureException` when they delete zero rows.
Otherwise, the NOOP delete gets silently ignored.

Note that save operations that are determined to be an update because the aggregate is not new will still throw an `IncorrectUpdateSemanticsDataAccessException` if they fail to update any row.
This is somewhat asymmetric to the delete-behaviour.
But with a delete the intended result is achieved: the aggregate is gone from the database.
For save operations the intended result is not achieved, hence the exception.

Closes #1313
Original pull request: #1314.
See https://github.com/spring-projects/spring-data-commons/issues/2651
2022-08-31 15:30:24 +02:00
Jens Schauder
dad6e056e8 Avoid noop update for Id only aggregates.
Closes #1309
2022-08-25 14:19:04 +02:00
Jens Schauder
2a8f62245b Remove deprecated code.
This removes most currently deprecated code.

An exception are various deprecations in Spring Data R2DBC for which it is not obvious how to modify the code that is still using the deprecated API.

Original pull request #1304
2022-08-11 10:44:51 +02:00
Jens Schauder
fd662bf9e6 Avoid duplicate selection of columns.
When the key column of a MappedCollection is also present in the contained entity that column got select twice.
We now check if the column already gets selected before adding it to the selection.

This only works properly if the column names derived for the entity property and the key column match exactly, which might require use of a `@Column` annotation depending on the used NamingStrategy.

Closes #1073
Original pull request #1074
2022-08-10 14:02:51 +02:00
Mark Paluch
d79ba7911f Allow disabling entity lifecycle events.
We now support disabling lifecycle events through the Template API to reduce the framework overhead when events are not needed.

Closes #1291
2022-07-21 09:49:42 +02:00
Jens Schauder
aad40a32b0 Polishing.
Added `@since` comments for new methods and classes.
General formatting and code style tweaking.
Github references for new tests added.
Fixes for integration tests with various databases:
- Not all stores support submillisecond precision for Instant.
- Count for exists query doesn't work for all databases, nor does `LEAST(COUNT(1), 1)`
- MariaDB defaults timestamp columns to the current time.
- Ordering was applied twice.
- DATETIME in SqlServer has a most peculiar preceision. We switch to DATETIME2.

Original pull request #1195
See #1192
2022-07-13 12:55:06 +02:00
Jens Schauder
86f0140f79 Moved QueryMapper.
The use of QueryMapper caused dependency cycles.

Original pull request #1195
See #1192
2022-07-13 12:54:42 +02:00
Diego Krupitza
a6fb4df590 Support for Query By Example.
Original pull request #1195
Closes #1192
2022-07-13 12:54:07 +02:00
Mark Paluch
58bb158004 Add support for RelationalManagedTypes.
See #1269
2022-07-06 15:27:40 +02:00
Christoph Strobl
6943cfa659 Add AOT jdbc repository support.
We now use the AOT infrastructure of Spring Framework 6 and data commons to provide AOT support building the foundation for native image compilation.
Additionally we register hints for GraalVM native image.
Update auditing configuration to avoid inner bean definitions.

See: #1269
2022-07-05 12:32:19 +02:00
Jens Schauder
dd663384ac Upgrade MS SQL Server Docker image version to 2019-CU16-ubuntu-20.04
Closes #1283
2022-07-04 15:13:32 +02:00
Jens Schauder
09c3088a78 Upgrade MariaDb Docker image to 10.8.3
Closes #1282
2022-07-04 12:37:46 +02:00
Jens Schauder
fbd44bd349 Upgrade DB2 Docker image to 11.5.7.0a.
Closes #1272
2022-06-23 16:25:36 +02:00
Jens Schauder
a271c43c83 Upgrade MySql Docker image to version 8.0.29.
Closes #1271
2022-06-23 14:53:40 +02:00
Jens Schauder
a263d992b7 Upgrade Oracle Docker image to version 21.3.0-slim
Closes #1268
2022-06-21 12:56:49 +02:00
Jens Schauder
0b686ef3a7 Upgrade PostgreSql Docker image to version 14.3
Closes #1267
2022-06-21 11:27:53 +02:00
Jens Schauder
ed7853d2d0 Polishing.
Original pull request #1231
See #537
2022-06-20 15:07:54 +02:00
Chirag Tailor
1a283fa406 Add DeleteBatchingAggregateChange to batch DeleteRoot actions.
Original pull request #1231
See #537
2022-06-20 15:06:46 +02:00
John Blum
483b30e8c2 Remove punctuation in Exception messages.
Closes #1259.
2022-06-08 12:16:37 -07:00
Jens Schauder
6911bfba98 Polishing.
Introduces the BatchedActions abstraction to encapsulate the different ways singular actions get combined into batched actions.

Original pull request #1230
Original pull request #1229
Original pull request #1228
Original pull request #1211
2022-06-08 14:54:19 +02:00
Chirag Tailor
64a07e608d Add DeleteBatchingAggregateChange to batch deletes when deleting multiple aggregate roots.
+ Rename DefaultAggregateChange to DeleteAggregateChange.

Original pull request #1230
2022-06-08 14:54:19 +02:00