We now support Conditions.between, notBetween, and notLike as additional criteria conditions and support case-insensitive comparisons.
For LIKE escaping we pick up the Escaper configured at Dialect level. The newly introduced ValueFunction allows string transformation before computing a value by applying the Escaper to the raw value. Escaping is required for StartingWith, Contains and EndsWith PartTree operations.
Original pull request: spring-projects/spring-data-r2dbc#295.
Rename Dialect bean to jdbcDialect to avoid generic bean names. Require JdbcOperations in DialectResolver. Rename JdbcDialectResolver to DialectResolver for consistent naming with R2DBC the underlying type is a Dialect.
Tweak Javadoc and extend documentation with custom conversions include from Spring Data Commons. Extract MySQL identifier processing defaults into constant.
Original pull request: #202.
So far the user had to specify an `Dialect` themselves if they wanted to use anything but HSQLDB.
We now identify the supported databases and pick the appropriate `Dialect`.
Vendors who want to offer support for their database may provide an implementation of `JdbcDialectProvider` and register it using a file under the key `org.springframework.data.jdbc.repository.config.DialectResolver$JdbcDialectProvider`.
Original pull request: #202.
Events now have a type parameter for the type of aggregate root they relate to.
In order to utilize this an react to only events relating to a specific type of entity `AbstractRelationalEventListener` was added.
Original pull request: #199.
Ids are only contained if it can not be guaranteed that an entity is contained which applies to the delete events.
As a side effect Identifier got simplified into a single simple class.
Original pull request: #199.
Rename ConditionGroup to GroupedCondition. Introduce Conditions.group(…) factory method instead of applying grouping via `condition.group()`. Introduce getter to introspect conditions.
Original pull request: #193.
We no correctly combine schema and table name using separate SqlIdentifier objects instead of leaving the schema name as part of the table name. Previously, the concatenated name failed to resolve with quoted identifiers.
JdbcRepositoryConcurrencyIntegrationTests now only runs with MySql instead of always with MySql.
Also modified it to not use sleep.
Copyright header added.
Formatting.
Original pull request: #191.
The previous process of deleting referencing entities, updating the root and then inserting referencing entities hat the potential of causing deadlocks.
When one process didn't obtain a lock on delete because there wasn't anything to delete root and referencing entities got locks in opposite order, which is a classical cause for deadlocks.
Original pull request: #191.
Fixes compiler error from rebase rebase.
Removes IdentifierProcessingAdapter since it wasn't used anymore
Merged UnquotedDialect with NonQuotingDialect since both served the same purpose of a simple Dialect for testing.
Formatting.
Original pull request: #187.
We now use SqlIdentifier to encapsulate names and aliases of tables, columns and functions.
We now use proper delegation to ConditionVisitor to render a JOIN condition.
Previously, we used toString() of Condition segments which rendered an approximation of the condition.
ConditionVisitor applies RenderContext settings that consider identifier quoting and normalization strategies.
Original pull request: #187.
Beginning from JDK 10 `Instant` uses nanosecond precision which doesn't make it through the database.
This caused the test to fail.
This fix fixes only the test by making the assertion more lenient.
Actually storing and retrieving nanosecond precision time values is a separate issue.
Also reduced logging in tests again.
We now no longer require MappingContext to create BasicRelationalPersistentProperty and BasicJdbcPersistentProperty.
We require only the NamingStrategy so we're just passing that one instead of the entire context.
Original pull request: #186.
RelationalPersistentProperty.getColumnType() and getSqlType() are no longer members of RelationalPersistentProperty but part of the JdbcConverter. Both methods have a strong affinity to JDBC-specifics and belong rather into the conversion strategy and not into mapping-metadata.
Original pull request: #186.