Commit Graph

304 Commits

Author SHA1 Message Date
Jens Schauder
4c6894464e Fix derived queries with boolean literals.
`IsTrue` and `IsFalse` queries no longer use a literal in the query, but a bind parameter.
This allows Spring Data JDBC or the JDBC driver to convert the passed boolean value to whatever is required in the database.

For Oracle converter where added to support storing and loading booleans as NUMBER(1,0) where 0 is false and everything else is true.

Closes #908
Original pull request #983
2021-06-10 14:41:41 +02:00
Jens Schauder
8652418245 Do not convert from LocalDateTime to Timestamp by default.
Most supported databases don't need that conversion.

Db2 does need it and gets it through JdbcDb2Dialect.

As part of the effort it became obvious that the filtering for conversions between Date and JSR310 data types was broken.
It is fixed now, which required a dedicated reading conversion from LocalDateTime to Date for JdbcMySqlDialect.

Closes #974
Original pull request: #985.
2021-06-10 14:00:17 +02:00
Jens Schauder
2c413a2d3b Polishing.
See #934
2021-06-01 14:38:48 +02:00
Christoph Strobl
35589af3d3 Avoid conversion warnings for store specific simple types.
Dialects now can define a set of known simple types the driver can handle without further interaction. This is done to avoid warnings during converter registration for types known in one environment but not the other.
Also move types around a bit, change visibility and make sure jdbc specific dialects inherit converters from their parents.

Original pull request #981
See #935
2021-05-31 12:03:50 +02:00
Jens Schauder
6114d8e1fd Polishing.
Removes superfluous method.
Applied feedback from review: Formatting, Naming, and improved backward compatibility.

Originial pull request #981
See #935
2021-05-31 12:03:17 +02:00
Jens Schauder
33f08f7253 Support for Dialect specific custom conversions and OffsetDateTime.
Dialects may now register a list of converters to take into consideration when reading or writing properties.

See `JdbcSqlServerDialect` for an example.

By default `OffsetDateTime` does not get converted anymore.
If a database needs a conversion it can register it by implementing `Dialect.getConverters()` as described above.

Closes #935
Original pull request #981
2021-05-31 11:59:32 +02:00
Jens Schauder
261d5ebc67 Polishing.
Added Javadoc, removed superfluous code.

Original pull request #980
2021-05-18 15:16:21 +02:00
Jens Schauder
b99b4aaf2d Avoid unnecessary joins.
Original pull request #980
2021-05-18 15:16:21 +02:00
Mark Paluch
b3a2925573 Add support for repository query method projections.
JDBC repository methods now support interface and DTO projections by specifying either the projection type as return type or using generics and providing a Class parameter to query methods.

Closes #971
Original pull request #980
2021-05-18 15:16:20 +02:00
Mark Paluch
04fa01b8ee Polishing.
See #972
2021-05-17 11:44:05 +02:00
Mark Paluch
af755dc81b Move Identifier from Spring Data Relational to Spring Data JDBC.
Fix split-package between spring.data.jdbc and spring.data.relational across modules.

Closes #972.
2021-05-17 11:42:07 +02:00
Jens Schauder
1ca628922d Fixes build failures with JDK16.
`JdbcMappingContext` sets the SimpleTypeHolder to `JdbcSimpleTypeHolder.HOLDER` by default.
Fixing test failures where properties of type `UUID` were considered an entity by the `MappingContext`.
This in turn triggered failures when it tried to make fields of `UUID` accessible.

Removed the `UUID` field from a test entity in SD Relational, since `UUID` is not a simple type for Relational, nor a proper entity.

Replaced `@PostConstruct` with `InitializingBean` in test data source conifgurations in order avoid the requirement of importing javax.annotation-api.

Closes #975
2021-05-17 11:09:05 +02:00
Jens Schauder
920b2d47ef Upgrades MySql for testing to 8.0.24.
This version of the docker container doesn't allow to use `root` as the database user name.
We still have to connect as `root` so we can create alternative schemata.
2021-05-06 12:01:25 +02:00
Mark Paluch
aa7d68d8c3 Prepare next development iteration.
See #955
2021-04-14 14:30:11 +02:00
Mark Paluch
1ba42993c6 Release version 2.2 GA (2021.0.0).
See #955
2021-04-14 14:18:47 +02:00
Jens Schauder
5d127cf2a3 Upgrade DB2 driver to 11.5.5.0.
Original pull request: #961.
2021-04-14 08:33:33 +02:00
Jens Schauder
44833531b9 Upgrade mysql driver to 8.0.23.
Original pull request: #961.
2021-04-14 08:33:19 +02:00
Jens Schauder
978d91c9c3 Polishing.
Organize version properties in groups and alphabetically.
Extracted additional version properties.

Original pull request: #961.
2021-04-14 08:32:57 +02:00
Jens Schauder
79923b66dc Polishing.
Tried to clarify the two step process of `JdbcQueryExecution` construction in `PartTreeJdbcQuery` by comments and renaming.

Original pull request #952
2021-04-06 19:20:10 +02:00
Mark Paluch
d191938e59 Add support for Slice and Page queries using query derivation.
We now support pagination for queries returning Slice and Page.

interface PersonRepository extends PagingAndSortingRepository<Person, String> {

  Slice<Person> findFirstByLastname(String lastname, Pageable pageable);

  Page<Person> findFirstByLastname(String lastname, Pageable pageable);
}

Closes #774
Original pull request #952
2021-04-06 19:20:10 +02:00
Mark Paluch
308ed6b081 Prepare next development iteration.
See #941
2021-03-31 17:24:03 +02:00
Mark Paluch
743f13949b Release version 2.2 RC1 (2021.0.0).
See #941
2021-03-31 17:05:07 +02:00
Mark Paluch
b6c41c68b3 Polishing.
Refactor ArrayUtil into a proper utility class providing toPrimitive and toObject methods for each primitive type. Add boolean support. Move convertToObjectArray to BasicJdbcConverter as its placement in ArrayUtils creates a certain amount of ambiguity over its actual purpose.

Create unit test.

See #945
Original pull request: #949.
2021-03-29 13:54:46 +02:00
Jens Schauder
55c6c0e858 Properly convert primitive array arguments.
Closes #945
Original pull request: #949.
2021-03-29 13:54:40 +02:00
Mark Paluch
dc88c16bef Prepare next development iteration.
See #925
2021-03-17 11:30:28 +01:00
Mark Paluch
e43bc507b0 Release version 2.2 M5 (2021.0.0).
See #925
2021-03-17 11:17:49 +01:00
Jens Schauder
53bed2613b Polishing.
Extract method in order to make the code more readable.

Switch to #xxx syntax for issue numbers instead of gh-xxx.

Original pull request #939
2021-03-12 12:05:20 +01:00
Radim Tlusty
304345c4c8 Don't retrieve generated keys on INSERT if id is set.
Closes #933
Original pull request #939
2021-03-12 11:53:11 +01:00
Jens Schauder
0e8e8a4799 Polishing.
Improves tests by also testing for the negative case.

Original pull request #938
2021-03-12 11:22:28 +01:00
Oliver Drotbohm
32d79cce59 Move to Spring Data Commons' association abstraction.
Deprecated Spring Data JDBC's custom PersistentProperty.isReference() in favor of the already existing ….isAssociation() with the same semantics to benefit from association definitions implemented in Spring Data Commons. Make use of the newly introduced PersistentEntity.doWithAll(…) to apply the previously existing property handling to both properties and now associations, too.

Original pull request #938
2021-03-12 11:22:28 +01:00
Oliver Drotbohm
faaaeab4b5 JdbcCustomConversion does not reject non-Date related default converters.
Previously, JdbcCustomConversion rejected any default converter that was not converting from and to java.util.Date. This probably stemmed from the fact that up until recently, Spring Data Commons' CustomConversions only registered date related default converters. As of spring-projects/spring-data-commons#2315 we also support jMolecules' Association and Identifier converters. We've relaxed the rejection to only explicitly reject all non Date/Time related converters if the conversion is from/to java.util.Date but allow everything else out of the box.

Original pull request #937
2021-03-12 08:58:40 +01:00
Christoph Strobl
c86998a92d Prepare next development iteration.
See #926
2021-02-18 11:35:20 +01:00
Christoph Strobl
593fa884f3 Release version 2.2 M4 (2021.0.0).
See #926
2021-02-18 11:25:13 +01:00
Christoph Strobl
4885f192f8 Prepare next development iteration.
See #906
2021-02-17 14:17:47 +01:00
Christoph Strobl
11e975cb10 Release version 2.2 M3 (2021.0.0).
See #906
2021-02-17 14:00:09 +01:00
Jens Schauder
9a23493d72 Trigger BeforeConvertEvent when saving an aggregate.
Closes: #910
Original pull request: #913.
2021-01-19 09:41:59 +01:00
Jens Schauder
429f1b06b9 DATAJDBC-620 - Polishing.
Remove public modifier from tests, which is superfluous with JUnit 5.

Original pull request: #256.
2021-01-18 14:47:40 +01:00
Jens Schauder
3d4847a552 DATAJDBC-620 - The default RowMapper now gets passed to ResultSetConstructor.
Original pull request: #256.
2021-01-18 14:47:34 +01:00
Christoph Strobl
261f851fee Prepare next development iteration.
See #862
2021-01-13 15:46:58 +01:00
Christoph Strobl
6b064b544a Release version 2.2 M2 (2021.0.0).
See #862
2021-01-13 15:34:04 +01:00
Mark Paluch
394b1cec31 Update copyright year to 2021.
Closes #904
2021-01-12 11:32:07 +01:00
Jens Schauder
ba653183d1 #257 - Remove references to Jira.
All references to the Spring Jira instance are replaced by GitHub references.
2021-01-05 10:55:31 +01:00
Jens Schauder
2188b5d6cf DATAJDBC-637 - Fix tests for all databases.
Adds SQL scripts for all databases.
Separates tests for all databases vs. those that actually support nanosecond precision.

Original pull request: #255.
2020-12-11 08:16:55 +01:00
Greg L. Turnquist
306f1b39dd DATAJDBC-637 - Fix typo in H2 testing.
Original pull request: #254.
2020-12-11 08:16:43 +01:00
Mark Paluch
869e987e55 DATAJDBC-637 - Polishing.
Make Jsr310TimestampBasedConverters package-private. Introduce convenience constructors to improve external configuration of JdbcCustomConversions.

Original pull request: #254.
2020-12-10 11:05:29 +01:00
Jens Schauder
2efcda2a91 DATAJDBC-637 - Time conversion now preserve nanosecond precision.
The standard JSR 310 converters are no longer used for conversions between java.util.Date and java.time.*.
New converters based converting to/from Timestamp are used.

This preserves the precision because both the java.time.* API and Timestamp have nanosecond precision, while java.util.Date has not.

Original pull request: #254.
2020-12-10 11:05:29 +01:00
Mark Paluch
f0f0ef3e2a DATAJDBC-627 - Prepare next development iteration. 2020-12-09 15:32:15 +01:00
Mark Paluch
3ea60d0b0c DATAJDBC-627 - Release version 2.2 M1 (2021.0.0). 2020-12-09 15:21:55 +01:00
Jens Schauder
b1dd8042cd DATAJDBC-641 - Removes references of org.jetbrains.annotations.NotNull.
Those annotations cause build failures once the providing jar wasn't available anymore since kotlin removed that dependency.

Those annotations were present in the code by accident anyway since Spring has and uses its own set of annotations.
2020-12-07 15:38:19 +01:00
Mark Paluch
91ecc07b84 DATAJDBC-629 - Polishing.
Reorder methods.

Original pull request: #252.
2020-11-25 14:32:02 +01:00