Commit Graph

324 Commits

Author SHA1 Message Date
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
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