Commit Graph

1713 Commits

Author SHA1 Message Date
Jens Schauder
01e98dc171 Polishing.
See: #1315
Original pull request: #1324.
2022-10-05 15:34:11 +02:00
Jens Schauder
e171d4b91b Remove non-Javadoc comments.
These are no longer serve their purpose.

Closes #1347
2022-10-05 15:34:11 +02:00
Jens Schauder
ea00369f07 Add support for factory methods.
R2DBC now supports the use of factory methods for entity creation.
Spring Data JDBC already does so via f326897950

Simply annotate a static factory method on your entity class with `@PersistenceCreator`.

Closes #1346
See https://github.com/spring-projects/spring-data-commons/issues/2476
See f326897950
2022-10-05 15:34:10 +02:00
Jens Schauder
d1890e3b69 Reuse existing infrastructure for SpEL processing.
Original pull request #229
See #619
2022-09-30 12:29:12 +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
Spring Builds
fb5895b80b After release cleanups.
See #1295
2022-09-19 14:39:12 +00:00
Spring Builds
3ab0731fe4 Prepare next development iteration.
See #1295
2022-09-19 14:39:01 +00:00
Spring Builds
22618431d8 Release version 3.0 M6 (2022.0.0).
See #1295
2022-09-19 14:15:28 +00:00
Spring Builds
2c28684347 Prepare 3.0 M6 (2022.0.0).
See #1295
2022-09-19 14:13:05 +00:00
Jens Schauder
09dfbf14a3 Clarify that events and callbacks documentation.
Events and callbacks only get triggered for aggregate roots.

Closes #1328
2022-09-14 13:55:30 +02:00
Mark Paluch
3f1dab93e4 Adopt to changed Mockk artifact name.
Closes #1326
2022-09-12 11:16:58 +02:00
Jens Schauder
bf356f561d Clarify documentation for @Modifying.
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
2022-09-08 15:31:17 +02:00
Jens Schauder
7a4143fb50 Changelog removed.
Closes #1013
2022-09-08 15:22:46 +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
Joshua Sattler
f5989e1cfc Simplify code in mapping example.
Original pull request #1319
2022-08-29 09:07:48 +02:00
Jens Schauder
dad6e056e8 Avoid noop update for Id only aggregates.
Closes #1309
2022-08-25 14:19:04 +02:00
Mark Paluch
b46e34263e Fix COUNT/EXISTS projections for entities without an identifier.
We now issue a COUNT(1) respective SELECT 1 for COUNT queries and EXISTS queries for entities that do not specify an identifier.

Previously these query projections could fail because of empty select lists.

Closes #1310
2022-08-18 12:06:03 +02:00
Mark Paluch
92e77a47c9 Retain element ordering in AfterConvertCallbacks.
We now use concatMap on result Fluxes to retain the object order. Previously, we used flatMap on a flux that has led to changes in element ordering.

Closes #1307
2022-08-16 11:21:07 +02:00
Mark Paluch
e246cc4f59 Fix parameter binding of reused named parameters using anonymous bind markers.
We now properly bind values for reused named parameters correctly when using anonymous bind markers (e.g. ? for MySQL). Previously, the subsequent usages of named parameters especially with IN parameters were left not bound.

Closes #1306
2022-08-16 11:06:30 +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
07ade67862 Polishing.
Code formatting.

See #1073
Original pull request #1074
2022-08-10 14:03:14 +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
0d1ba211c5 Polishing.
Reuse H2 dialect settings in R2DBC-specific H2 dialect.
Refactor ArrayColumns support classes, into toplevel-types. Let R2DBC H2 sublass the relational H2Dialect to decouple from Postgres.

See #1287
Original pull request #1297
2022-08-10 13:01:02 +02:00
Mark Paluch
c2e163b5c2 Use OFFSET/FETCH syntax in H2 dialect.
As per suggestion of the H2 maintainer.

Closes #1287
Original pull request #1297
2022-08-10 13:01:01 +02:00
Jens Schauder
1fd38cb945 Upgrade MariaDb JDBC driver to 3.0.7
Closes #1281
2022-08-08 15:25:34 +02:00
dependabot[bot]
d4fe31a9e8 Upgrade to postgresql 42.4.1.
Bumps [postgresql](https://github.com/pgjdbc/pgjdbc) from 42.4.0 to 42.4.1.
- [Release notes](https://github.com/pgjdbc/pgjdbc/releases)
- [Changelog](https://github.com/pgjdbc/pgjdbc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pgjdbc/pgjdbc/compare/REL42.4.0...REL42.4.1)

---
updated-dependencies:
- dependency-name: org.postgresql:postgresql
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Closes #1302
2022-08-08 09:43:45 +02:00
Jens Schauder
fcbecda414 Remove the namespace reference and links to it.
Closes #1290
See https://github.com/spring-projects/spring-data-commons/issues/2662
Original pull request #1298
2022-07-26 10:16:02 +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
Christoph Strobl
b691af7b30 After release cleanups.
See #1247
2022-07-15 15:30:56 +02:00
Christoph Strobl
6b9f49e86a Prepare next development iteration.
See #1247
2022-07-15 15:30:49 +02:00
Christoph Strobl
92150f721d Release version 3.0 M5 (2022.0.0).
See #1247
2022-07-15 15:18:32 +02:00
Christoph Strobl
2a101fea35 Prepare 3.0 M5 (2022.0.0).
See #1247
2022-07-15 15:17:58 +02:00
Mark Paluch
3f256047fd Polishing.
Update tests to work with SQL server inserts.

See #1292
2022-07-15 09:08:15 +02:00
Mark Paluch
f442261936 Upgrade to R2DBC MSSQL 1.0.0.RC1.
Enable tests for SQL Server.

See #1292
2022-07-14 11:37:57 +02:00
Jens Schauder
6958157a7e Use TypeScanner instead of ClassPathScanningCandidateComponentProvider.
Closes #1288
2022-07-13 16:02:04 +02:00
Mark Paluch
df9cecbdcf Polishing.
Adopt to improved naming scheme for runtime hints.

See #1269
2022-07-13 15:03:41 +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
27e2aa285a Documentation for Query By Example.
Original pull request #1195
See #1192
2022-07-13 12:54:53 +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
ee6c2c89b5 Upgrade to R2DBC 1.0.
Removed SQL Server and MariaDB tests for the time being until drivers are available.

Closes #1292
2022-07-13 12:10:04 +02:00
Christoph Strobl
1467d63f61 Simplify auditing setup
Use IsNewAwareAuditingHandler factory method to avoid exposing additional beans.

See: #1279
2022-07-08 11:21:37 +02:00
Mark Paluch
b71e3b9697 Polishing.
Refine name and visibility of runtime hints registrars.

See #1279
see #1269
2022-07-07 09:01:39 +02:00
Mark Paluch
70eca3a2ca Add support for R2DBC RelationalManagedTypes.
See #1279
2022-07-06 15:27:40 +02:00
Mark Paluch
58bb158004 Add support for RelationalManagedTypes.
See #1269
2022-07-06 15:27:40 +02:00
Christoph Strobl
59a1761dbc Add AOT r2dbc 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.
Also update r2dbc auditing configuration to avoid inner bean definitions.

See: #1279
2022-07-06 15:01:52 +02:00