Commit Graph

345 Commits

Author SHA1 Message Date
Jens Schauder
794b031507 Prepared move of JdbcValue to mapping.
This is to avoid dependency cycles between mapping and conversion.

Closes #1128
2022-01-14 08:45:05 +01:00
Jens Schauder
09f78c4786 Add JdbcValue as a simple type.
Closes #1122
2022-01-12 11:45:36 +01:00
Jens Schauder
1acb66645d Fix missing class issue with H2 version 2.0.202
With older versions H2 returned a proprietary  instance of `TimestampWithTimeZone` from `ResultSet.getObject()`.
We used to support the conversion of that to an `OffsetDateTime`.

With the most recent versions `TimestampWithTimeZone` is no longer part of the H2 driver, and we only register the converter when we encounter older versions of H2.

Closes #1114
See https://github.com/h2database/h2database/pull/1359
2021-12-17 09:15:55 +01:00
Jens Schauder
ee1f420d81 Polishing.
Original pull request #1097
2021-12-07 15:22:57 +01:00
Charles
af72307d4b Fix Flaky Tests.
Original pull request #1097
2021-12-07 15:02:27 +01:00
Jens Schauder
cdff3850ae Migrate off Slf4J to JCL.
Closes #1091
Original pull request #1092
2021-12-07 10:58:11 +01:00
Jens Schauder
2fc35f4ced Postgres geometric types are considered simple.
Closes #1065
Original pull request #1085
2021-12-07 10:42:50 +01:00
Jens Schauder
61c6438bc3 Polishing.
Simplified the code structure.
Ensured backward compatibility by recreating some methods often immediately deprecating them.

Moved new classes to the places where they belong, so that the package ...core.sql.render depends on ...core.dialect and not the other way round.
This causes dependency cycles because dependencies in the other direction already exists.
This will be properly fixed by #1105.
For now the offending classes are ignored by the DependencyTests.

See #777
See #1105

Polishing
2021-12-01 13:39:54 +01:00
Mikhail-Polivakha
7551cbd763 Support inserts for id only entities.
This broke in the past for some databases that do not support empty value lists.

Closes #777
Original pull request #1047
2021-11-29 15:24:24 +01:00
Jens Schauder
7dc249d117 Prepare next development iteration.
See #1070
2021-11-12 10:59:41 +01:00
Jens Schauder
5040f949c9 Release version 2.3 GA (2021.1.0).
See #1070
2021-11-12 10:49:36 +01:00
Mark Paluch
239f8c75bd Polishing.
Use column aliases in order-by/expressions when column is aliased. Reduce method visibility in tests.

Closes #968
Original pull request: #1080.
2021-11-08 10:22:07 +01:00
Jens Schauder
7d1ed85cbe Use fully qualified names in ORDER BY clause.
Closes #968
Original pull request: #1080.
2021-11-08 10:22:03 +01:00
Jens Schauder
baee76a46d Make Oracle tests work with Testcontainers 1.16.2.
The new Testcontainers version comes with a standard Oracle image configured and doesn't work with the one we used so far.
Making the standard image work required some tweaks to the setup so that the test user has the required privileges.

Closes #1081
2021-11-05 09:20:16 +01:00
Mark Paluch
546d7dccda Prepare next development iteration.
See #1052
2021-10-18 13:55:38 +02:00
Mark Paluch
a8fc77b14c Release version 2.3 RC1 (2021.1.0).
See #1052
2021-10-18 13:48:13 +02:00
Mark Paluch
4be6bc21ad Polishing.
Reduce test element visibility according to JUnit 5 requirements.

See #1061
2021-10-06 09:07:17 +02:00
Mark Paluch
09596ce1eb Log a warning when a query method is annotated with a query and a query name.
We now log when a query method has an ambiguous declaration to clarify that the declared query is used.

Closes #1061.
2021-10-06 09:07:16 +02:00
Jens Schauder
3cd25ee01f Introducing AfterConvertCallback/Event.
This is to replace the AfterLoadCallback/Event in order to match the naming of other store modules.

AfterLoadCallback/Event is still in place for now, but deprecated.

Closes #1053
Original pull request: #1060.
2021-10-01 10:33:59 +02:00
Mark Paluch
b02ee3c083 Polishing.
Encapsulate array support in JdbcArrayColumns.

See #1033
Original pull request: #1037.
2021-09-30 14:35:41 +02:00
Jens Schauder
933b2f125d Add the appropriate SQL type representation for floats in Postgres arrays.
Note that there is a separate problem with loading arrays of floats.

Original pull request #1037
See #1046
2021-09-30 14:35:34 +02:00
Jens Schauder
bc0d307415 SQL type used in array construction depends on Dialect.
Postgres requires the non standard type "FLOAT8" for "DOUBLE".
This is accomplished by making the conversion dependent on the dialect.

This required a new JdbcDialect interface in order to keep the JDBC annotation out of the relational module.

Closes #1033
Original pull request: #1037.
2021-09-30 14:35:03 +02:00
Mark Paluch
22e57fdffc Polishing.
See #1022
Original pull request: #1039.
2021-09-28 15:53:20 +02:00
Jens Schauder
cc6859b8b8 Fixes annotated named queries.
@Query.name wasn't considered when trying to find a named query for a query method.

Closes #1022
Original pull request: #1039.
2021-09-28 15:53:10 +02:00
Jens Schauder
f6eacf327c Support for in line queries for tables.
`InlineQuery` can be used wherever a `Table` was used up to now.

```
Table one = ...;
Select select = Select.builder()
		.select(one.column("id"), employee.column("name"))
		.from(one)
		.build();

InlineQuery inline = InlineQuery.create(select, "inline");
Select select = Select.builder()
		.select(inline.column("id"), inline.column("name"))
		.from(inline)
		.build();
```

Join and From renderer now use the same FromTableVisitor.
Also the SelectListVisitor reuses now the ExpressionVisitor.

Fixes #1003
Original pull request: #1018.
2021-09-28 10:50:51 +02:00
Mark Paluch
562561b93c Prepare next development iteration.
See #1026
2021-09-17 09:52:18 +02:00
Mark Paluch
a0cdb079d5 Release version 2.3 M3 (2021.1.0).
See #1026
2021-09-17 09:44:56 +02:00
Christoph Strobl
d5e54b2036 Change visibility of JdbcRepositoryFactoryBean setters.
Setters of the FactoryBean are now public.

Closes #1031
2021-08-24 14:09:49 +02:00
Jens Schauder
aa1e3b44b1 Prepare next development iteration.
See #1012
2021-08-12 15:16:21 +02:00
Jens Schauder
4b6ed3b17c Release version 2.3 M2 (2021.1.0).
See #1012
2021-08-12 15:03:17 +02:00
Mark Paluch
f997a611d8 Polishing.
Remove Jackson in favor of JsonHolder and PGobject usage within the domain model. Convert spaces to tabs. Reorder methods and classes.

See #920
Original pull request: #1008.
2021-07-20 16:09:47 +02:00
Nikita Konev
d1e8e722c1 Consider PGobject as simple type.
Closes #920
Original pull request: #1008.
2021-07-20 16:09:38 +02:00
Jens Schauder
b0996802d3 Prepare next development iteration.
See #967
2021-07-16 14:19:55 +02:00
Jens Schauder
5ed1a4a6d1 Release version 2.3 M1 (2021.1.0).
See #967
2021-07-16 14:09:25 +02:00
Mark Paluch
7d67f30bbd Polishing.
Tweak method names. Rebase onto main. Convert issue references to GH- from hash prefixed ones. Remove final keyword from variable and parameter declarations.

Original pull request: #999.
See #987
2021-07-15 12:04:53 +02:00
Jens Schauder
11734c1bcc Support AggregateReference in query derivation.
For a property of type AggregateReference one may provide an aggregate, an AggregateReference, or the id of the aggregate.

Closes #987
Original pull request: #999.
2021-07-15 12:04:53 +02:00
Mark Paluch
4f4014dc8e Polishing.
Hide actual converters by making these private classes, expose factory method to construct converters. Avoid stream API usage on converter code paths. Remove unused imports. Clean up tests.

Original pull request: #993.
See #992
2021-07-15 11:49:16 +02:00
Jens Schauder
221d11324f Convert AggregateReference by converters instead of custom code paths.
Closes #992
Original pull request #993
2021-07-15 11:49:07 +02:00
Jens Schauder
884332871e Unifying GitHub references to GH-nnn.
Original pull request #903
See #578
2021-07-02 11:07:27 +02:00
Jens Schauder
377d841284 Add documentation for streaming results.
Also us Github issue numbers on tests.

Original pull request #903
See #578, #971
2021-07-02 11:06:56 +02:00
Dennis Effing
c416d3d0ea Add support for streamed query results.
Use queryForStream for streamed query results.
Since ResultSetExtractor cannot be reasonably be used together with streams it falls back to the existing collection behaviour.

Closes #578
Original pull request #903
2021-07-02 11:06:38 +02:00
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