Commit Graph

472 Commits

Author SHA1 Message Date
Jens Schauder
91ddda0c3f DATAJDBC-479 - Polishing.
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.
2020-02-11 20:28:05 +01:00
Mark Paluch
592f483699 DATAJDBC-479 - Use SqlIdentifier in SQL AST.
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.
2020-02-11 20:26:57 +01:00
Jens Schauder
595559bf28 DATAJDBC-484 - Fixes a JDK dependent test failure.
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.
2020-02-07 15:35:52 +01:00
taeyeonkim
fe181b2bd9 DATAJDBC-483 - Fixes small documentation issues.
Add anchor to section on JdbcValue in reference documentation.
Correct the type of `BeforeSaveEvent` in example code.

Original pull request: #189.
2020-02-07 11:31:07 +01:00
Jens Schauder
4a8888e296 DATAJDBC-101 - Polishing.
Refactored SQL generation.
Adapted some assertions to the "Spring Data JDBC style".
Minor formatting.

Original pull request: #188.
2020-02-07 10:29:11 +01:00
Milan Milanov
7f578ed2bb DATAJDBC-101 - Adds support for paging and sorting repositories.
Original pull request: #188.
2020-02-07 10:28:58 +01:00
Mark Paluch
f1d2d78dc8 DATAJDBC-464 - No longer require MappingContext to create BasicRelationalPersistentProperty.
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.
2020-01-31 13:17:51 +01:00
Mark Paluch
b29a789846 DATAJDBC-464 - Move RelationalPersistentProperty.getColumnType() and getSqlType() to JdbcConverter.
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.
2020-01-31 13:17:49 +01:00
Mark Paluch
8de5683b71 DATAJDBC-464 - Polishing.
Fix generics. Reformat code. Improve method names.

Original pull request: #186.
2020-01-31 13:17:47 +01:00
Jens Schauder
5ed80dfdb6 DATAJDBC-464 - Convert parameters.
Parameters now get converted to a suitable type supported by JDBC.

In order to support this the logic of finding the "right" type got moved from `BasicRelationalPersistentProperty` to `JdbcCompatibleTypes`.

Original pull request: #186.
2020-01-31 13:17:37 +01:00
Jens Schauder
d77e9cd837 DATAJDBC-481 - Properly increase version of immutable aggregate roots on update. 2020-01-30 10:12:11 +01:00
Jens Schauder
2f9d4b2c83 DATAJDBC-481 - Improved test for optimistic locking version increase. 2020-01-30 10:12:11 +01:00
Mark Paluch
6825a64d56 DATAJDBC-478 - Expose arguments of SimpleCondition and SimpleFunction.
We now allow introspection by exposing the arguments as function arguments and the condition expression could be subject to mapping metadata mapping.
2020-01-28 14:15:15 +01:00
Jens Schauder
36b419e712 DATAJDBC-386 - Polishing.
Tests that used the `@Column` annotation to map multiple properties to a single database column failed.
Mapping multiple values to one column is possible to allow for entities inside an aggregate to have the id of the aggregate as ID or as part of the ID.

The reason for the test failures was that columns get referred to by different ways:
Once per DerivedSqlIdentifier (i.e. with normalized spelling).
And Once per `@Column` annotation.

SqlIdentifier from an `@Column` annotation have always the same spelling, while the normalized version depends on the `Dialect`.

In order to make the tests work for all databases all references to the column in question had to get a `@Column` annotation.
This in turn required the create scripts to also use quoting when the normal case of the database did not match the case chosen in the annotation.

Finally there were some tests that used hand coded SQL which now uses `SqlIdentifier` and an injected `Dialect` to arrive at the correct SQL syntax.

Removed a couple of `@Ignore` annotations that got left in the code.

Original pull request: #182.
2020-01-28 13:55:19 +01:00
Mark Paluch
b3d5f05258 DATAJDBC-386 - Refactor SqlIdentifier.
Fix bind marker rendering for delete by Id.

SqlIdentifier provides now a transform(…) method to transform its content instead of exposing prefix(…) and suffix(…) methods. Composite identifiers are created through SqlIdentifier.from(…) instead of exposing a concat(…) method.

We also now apply identifier normalization only to derived identifiers instead of applying normalization to annotated column and table names. This change requires references to derived field names to honor the appropriate letter casing.

Identifier quotation can be disabled globally, via RelationalMappingContext.setForceQuote(false).

Move SqlIdentifier to relational.core.sql package.

Original pull request: #182.
2020-01-28 13:54:54 +01:00
Jens Schauder
558e7386dc DATAJDBC-386 - Introduce quoting for all database identifier.
All database identifiers, i.e. table names, column names and so on, now get quoted.
For most databases this means they get enclosed with double quotes.
For some databases this makes the the identifiers case sensitive.
In order to minimize the impact we convert identifiers their default letter casing.
This should be upper case according to the SQL standard but isn't for some databases.

The exact behavior regarding quoting and default letter casing gets controlled by a database specific `Dialect`.

Future changes will make the quoting of annotated columns and the default quoting behavior configurable.

Original pull request: #182.
2020-01-28 09:22:17 +01:00
Mark Paluch
a7bb561dec DATAJDBC-473 - After release cleanups. 2020-01-17 09:47:50 +01:00
Mark Paluch
25745c8f05 DATAJDBC-473 - Prepare next development iteration. 2020-01-17 09:47:49 +01:00
Mark Paluch
d5e1a5ad9c DATAJDBC-473 - Release version 2.0 M2 (Neumann). 2020-01-17 09:39:03 +01:00
Mark Paluch
75dad11b60 DATAJDBC-473 - Prepare 2.0 M2 (Neumann). 2020-01-17 09:38:43 +01:00
Mark Paluch
d5157382bf DATAJDBC-473 - Updated changelog. 2020-01-17 09:38:34 +01:00
Mark Paluch
b85d0a71ee DATAJDBC-424 - After release cleanups. 2020-01-16 16:11:55 +01:00
Mark Paluch
baf8dec0a6 DATAJDBC-424 - Prepare next development iteration. 2020-01-16 16:11:54 +01:00
Mark Paluch
a46438de3b DATAJDBC-424 - Release version 2.0 M1 (Neumann). 2020-01-16 16:05:23 +01:00
Mark Paluch
48d8c2aa51 DATAJDBC-424 - Prepare 2.0 M1 (Neumann). 2020-01-16 16:05:03 +01:00
Mark Paluch
e566630379 DATAJDBC-424 - Updated changelog. 2020-01-16 16:04:59 +01:00
Mark Paluch
868194e4af DATAJDBC-442 - Run Docker on Jenkins with m2 home mount. 2020-01-15 15:24:12 +01:00
Mark Paluch
8d80a1f29b DATAJDBC-442 - Run Docker on Jenkins with m2 home mount. 2020-01-15 15:02:59 +01:00
Mark Paluch
c2126d6831 DATAJDBC-458 - Updated changelog. 2020-01-15 12:51:14 +01:00
Mark Paluch
13ef9b417e DATAJDBC-457 - Updated changelog. 2020-01-15 10:36:35 +01:00
Mark Paluch
eb1877140d DATAJDBC-469 - Bump version to 2.0.0. 2020-01-13 14:46:43 +01:00
Jens Schauder
9828c15d4a DATAJDBC-442 - Polishing.
Reverted accidental change of version.
2020-01-10 17:31:06 +01:00
Greg Turnquist
1f419932e6 DATAJDBC-442 - Enable Java 11 builds. 2020-01-09 10:22:07 -06:00
Jens Schauder
8420a564e7 DATAJDBC-234 - Adds documentation.
Original pull request: #180.
2020-01-08 15:40:20 +01:00
Jens Schauder
09fd0fcbd6 DATAJDBC-234 - Fixes the default query naming and polishing.
The default name now does include the name of the domain class.
The default name now is no longer used when no query with the name specified in the `@Query` annotation is found.

Simplified the unit tests by extracting common functionality and improving naming.
Simplified test configuration.

Original pull request: #180.
2020-01-08 15:40:11 +01:00
mcisnerosb57
93272c8461 DATAJDBC-234 - Adds support for named queries stored in property files.
Queries are expected in a properties file on the classpath `META-INF/jdbc-named-queries.properties`.
The name of the query is by default `<simple class name of the domain type>.<methodName>`.
Alternatively it can be set using the `@Query` annotations `name` attribute.

Original pull request: #180.
2020-01-08 15:38:15 +01:00
Mark Paluch
a30fbf6246 DATAJDBC-466 - Update copyright years to 2020. 2020-01-07 08:50:23 +01:00
Jens Schauder
0fa780eccc DATAJDBC-462 - Adds a test to ensure that aggregates can be saved twice without any change. 2019-12-17 09:52:07 +01:00
Jens Schauder
a48b66743e DATAJDBC-461 - DatabaseProfileValueSource now supports setting via Environment. 2019-12-17 08:11:35 +01:00
Jens Schauder
85bc2ee73a DATAJDBC-446 - Updated changelog. 2019-12-04 14:32:43 +01:00
Jens Schauder
5e01851126 DATAJDBC-445 - Updated changelog. 2019-12-04 12:09:44 +01:00
Jens Schauder
a894371903 DATAJDBC-451 - Adds a what's new section for version 1.1. 2019-12-02 09:29:11 +01:00
Jens Schauder
ca2d2182d2 DATAJDBC-219 - Polishing.
DeleteWithVersion doesn't require an entity anymore.
Added the `@author` and `@since` tags where they were missing.
Formatting.
Added documentation.

Original pull request: #166.
2019-12-02 08:56:33 +01:00
Tyler Van Gorder
f7a04dcc2b DATAJDBC-219 - Implements optimistic record locking.
Optimistic locking is based on a numeric attribute annotated with `@Version` on the aggregate root.
That attribute is increased before any save operation and checked during updates to ensure that the database state hasn't changed since loading the aggregate.

Original pull request: #166.
2019-12-02 08:55:21 +01:00
Jens Schauder
8d0441c2e0 DATAJDBC-448 - Fixes documentation mistake. 2019-11-26 15:11:32 +01:00
detinho
ec62147dbe DATAJDBC-447 - Fix JDK 8 Travis build.
Original pull request: #181.
2019-11-20 13:46:37 +01:00
Mark Paluch
e024c983ad DATAJDBC-440 - Updated changelog. 2019-11-18 12:43:27 +01:00
Mark Paluch
cc92ce25b8 DATAJDBC-439 - Updated changelog. 2019-11-18 12:16:26 +01:00
Mark Paluch
9129622d1c DATAJDBC-417 - Polishing.
Reformat code. Fix collection-like node creation to cast to Iterable and consider arrays.

Original pull request: #169.
2019-11-13 13:34:13 +01:00
Jens Schauder
cf9b480ea2 DATAJDBC-417 - Fixed saving an entity containing a null embeddable with a reference to a further entity.
Constructing the DbActions assumed that the parent of a path exists (i.e. is not null) and created parent nodes.

Original pull request: #169.
2019-11-13 13:34:08 +01:00