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
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
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.
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.
`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.
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.
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
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.
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
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
`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
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.
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
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
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