Commit Graph

463 Commits

Author SHA1 Message Date
Mark Paluch
b8f4e8b765 #475 - Refine projection result mapping.
We now differentiate the result mapping based on projection type and query type. Previously, all projections used the domain type to map results first and then serve as backend for the projection proxy/DTO creation.
We now use direct result to DTO mapping for String-based queries to allow for a greater flexibility when declaring DTO result types. Interface-based projections and derived queries remain using the two-step process of result to domain type mapping and then mapping the domain type into the projection.
2020-10-08 15:04:14 +02:00
Mark Paluch
c00184b130 #465 - Polishing.
Fix type name in Javadoc.
2020-10-07 14:51:11 +02:00
Mark Paluch
03a667ca6d #465 - Convert bind values for String-based queries to their native type.
We now invoke the converter for query arguments of String-based queries (using the Query annotation or named queries) to convert the value into a type that can be used by the driver.

Previously all values were passed-thru which caused for e.g. enums to pass-thru these to the driver and the driver encode failed.
2020-10-07 14:50:54 +02:00
Mark Paluch
c3cb70f5ec #469 - Suppress emission of null values when using simple and primitive result types.
Results projected onto simple and primitive types that are null are no longer emitted.

A SQL query SELECT MAX(age) FROM my_table that returns a SQL NULL and that would be consumed as Long.class (Publisher<Long>) is an example for a primitive type that can be null. Since Reactive Streams prohibits the propagation of null values by a Publisher to a Subscriber the only viable option is to suppress null results by wrapping the mapping function into Optional result values and filter these values later to avoid null being emitted.
2020-10-02 10:47:32 +02:00
Mark Paluch
7a094b6765 #395 - Add support for suspend repository query methods returning List<T>. 2020-09-22 14:53:58 +02:00
Mark Paluch
d3823947aa #468 - Correctly map result of exists queries.
We now map results of exists queries to a boolean flag to ensure proper decoding. Previously, results were attempted to be mapped onto a primitive type which failed as there's no converter registered for Row to Boolean.
2020-09-21 15:17:45 +02:00
Mark Paluch
f0b30f0ca0 #467 - Migrate tests to JUnit 5.
Migrate also ExternalDatabase from JUnit rule to BeforeAllCallback and RegisterExtension.
2020-09-21 14:42:05 +02:00
Greg L. Turnquist
bd3eb88f89 #463 - Only test other versions for local changes on main branch. 2020-09-18 11:21:39 -05:00
Mark Paluch
68c2304b73 #413 - Disable test used as documentation include. 2020-09-18 09:20:42 +02:00
Mark Paluch
c23485d90e #413 - Introduce constructor to R2dbcEntityTemplate accepting ConnectionFactory.
This is a short-cut constructor that allows for simpler creation of the Template API.
2020-09-17 17:52:18 +02:00
Mark Paluch
ce57b25cd0 #413 - Refine reference documentation after Spring R2DBC migration. 2020-09-17 11:14:01 +02:00
Mark Paluch
b47da4050a #431 - After release cleanups. 2020-09-16 14:05:28 +02:00
Mark Paluch
44899d4314 #431 - Prepare next development iteration. 2020-09-16 14:05:24 +02:00
Mark Paluch
15e33cacf8 #431 - Release version 1.2 RC1 (2020.0.0). 2020-09-16 13:57:41 +02:00
Mark Paluch
1c378bba6f #431 - Prepare 1.2 RC1 (2020.0.0). 2020-09-16 13:57:08 +02:00
Mark Paluch
f26b06bd48 #431 - Updated changelog. 2020-09-16 13:56:59 +02:00
Mark Paluch
2f9cb8d538 #432 - Updated changelog. 2020-09-16 12:16:29 +02:00
Mark Paluch
2a2fd60f2c #458 - Upgrade to netty 4.1.52.Final. 2020-09-11 08:30:32 +02:00
Mark Paluch
cbe3792964 #457 - Upgrade to R2DBC Arabba-SR7. 2020-09-11 08:29:50 +02:00
Mark Paluch
4506fb67ca #453 - Introduce converters to consume Postgres Json and convert these to String/byte[].
We now ship converters for Postgres' Json data type to map JSON to String and to byte[] for easier and safe consumption.
2020-09-10 09:21:15 +02:00
Mark Paluch
b720249dac #454 - Adapt to changed array assertions in AssertJ. 2020-09-09 15:51:54 +02:00
Mark Paluch
6c3ba72253 #452 - Introduce factory method for StatementMapper. 2020-09-09 13:13:46 +02:00
Mark Paluch
0868f2aaef #423 - Add r2dbc-postgresql Geotypes to simple types.
R2DBC Postgres Geo-types are now considered simple types that are passed-thru to the driver without further mapping. Types such as io.r2dbc.postgresql.codec.Circle or io.r2dbc.postgresql.codec.Box can be used directly in domain models and as bind parameters.
2020-09-09 11:40:04 +02:00
Mark Paluch
7d3bd1f30a #444 - Initialize primitive Id properties upon INSERT.
We now propagate auto-generated Id values to primitive Id properties if the value in the domain model is zero. This happens in addition to non-primitive values being null to ensure that generated values end up in the domain model.
2020-09-09 11:22:48 +02:00
Jay Bryant
158a684c02 #392 - Wording changes.
Removed the language of oppression and violence
and replaced it with more neutral language.

Note that problematic words in the code have
to remain in the docs until the code changes.
2020-09-09 11:00:55 +02:00
hirakida
468ade2ac2 #442 - Fix method name in reference docs. 2020-09-09 10:54:53 +02:00
Mark Paluch
43d5d9d827 #451 - Initialize version for versioned entities after BeforeConvert callback.
We now initialize/increment the version of versioned entities (optimistic locking) after running the BeforeConvert callback. BeforeConvert callbacks may contain features such as auditing and if the auditing callback issues a isNew check, then the version would be already populated which leads to the auditing callback considering the entity not new anymore leaving the created date empty.
2020-09-09 09:25:21 +02:00
Mark Paluch
f0732a5388 #450 - Polishing.
Document version annotation.
2020-09-08 10:43:30 +02:00
Mark Paluch
d7a76609b2 #450 - Add support for @Value when constructing entities using their persistence constructor.
We now support the use of @Value in persistence constructors to compute values for constructor creation.

class MyDomainObject {

	public MyDomainObject(long id, @Value("#root.my_column") String my_column, @Value("5+2") int computed) {
		// …
	}
}
2020-09-08 10:43:30 +02:00
Mark Paluch
a1081bbbb2 #447 - Deprecate ReactiveDataAccessStrategy.
ReactiveDataAccessStrategy is now deprecated in favor of using StatementMapper, UpdateMapper, and R2dbcConverter directly. The access strategy interface was introduced to allow pluggable access strategies in DatabaseClient. With moving DatabaseClient into Spring Framework, this approach is no longer required.
2020-09-08 09:58:07 +02:00
Mark Paluch
28edf271ad #447 - Register MappingR2dbcConverter as bean.
We now register MappingR2dbcConverter as bean r2dbcConverter.
2020-09-08 09:56:31 +02:00
Mark Paluch
51c47fe00d #434 - Fix SpEL query example in reference documentation. 2020-09-07 14:18:36 +02:00
Mark Paluch
b4002e5c3f #440 - Create R2dbcEntityTemplate in R2dbcRepositoryFactoryBean.
We now create R2dbcEntityTemplate as part of R2dbcRepositoryFactoryBean initialization if the factory bean was configured with DatabaseClient and DataAccessStrategy only. Creating the template in the factory bean allows collecting entity callbacks for repository usage.
2020-09-03 11:07:34 +02:00
Mark Paluch
dc8eb79797 #409 - Updated changelog. 2020-08-12 13:25:46 +02:00
Mark Paluch
d5330fb867 #391 - After release cleanups. 2020-08-12 12:00:22 +02:00
Mark Paluch
269c176d65 #391 - Prepare next development iteration. 2020-08-12 12:00:19 +02:00
Mark Paluch
d952fe082c #391 - Release version 1.2 M2 (2020.0.0). 2020-08-12 11:52:05 +02:00
Mark Paluch
8fc059d5b6 #391 - Prepare 1.2 M2 (2020.0.0). 2020-08-12 11:51:40 +02:00
Mark Paluch
209de06482 #391 - Updated changelog. 2020-08-12 11:51:31 +02:00
Oh SeungMok
18676b09ea #429 - Fix typos in reference documentation. 2020-08-10 11:56:05 +02:00
Mark Paluch
7bf9ea7156 #411 - Introduce EnumWriteSupport for simpler pass-thru of enum values.
We now provide EnumWriteSupport as base class for enum write converters that should be written as-is to the driver.

R2dbcCustomConversions can now also be created from a dialect for easier R2dbcCustomConversions creation.
2020-08-06 10:59:42 +02:00
Mark Paluch
67c3d492a2 #402 - Exclude id property using initial value when inserting objects.
We now exclude Id properties from being used in the INSERT field list if the Id value is zero and of a primitive type or if the value is null using a numeric wrapper type.
2020-08-05 14:19:50 +02:00
Mark Paluch
ecbb8d8e78 #414 - Adopt SpEL support to use ReactiveEvaluationContextProvider.
We now defer query creation to obtain and resolve SpEL expression dependencies using reactive SpEL context extensions.
2020-08-05 12:17:35 +02:00
Okue
d3276b9d7e #425 - Fix lack of @Modifying in reference documentation code. 2020-08-05 10:20:17 +02:00
Jens Schauder
b0e03ea3a3 #368 - Polishing.
Line breaks after dots in ascii doctor file for easier reading of the source files.
Adds specific deprecation links instead of just links to the general package.
Removes an unused private method in `ConnectionFactoryUtils`

Original pull request: #412.
2020-08-04 14:55:42 +02:00
Mark Paluch
3d59c63bc0 #368 - Polishing.
Original pull request: #412.
2020-08-04 14:53:19 +02:00
Mark Paluch
086c5a1d2d #368 - Use Spring R2DBC.
We now use Spring R2DBC DatabaseClient and utilities to implement Spring Data R2DBC functionality.

Original pull request: #412.
2020-08-04 14:53:16 +02:00
Mark Paluch
f331572167 #368 - Deprecate API provided by Spring R2DBC.
This commit deprecates API that has been moved to Spring R2DBC.

Original pull request: #412.
2020-08-04 14:53:09 +02:00
Mark Paluch
266cc7f80d #416 - Make SimpleR2dbcRepository constructor public to allow subclassing. 2020-08-04 10:56:20 +02:00
Mark Paluch
bc2e977f6e #418 - Polishing.
Fix fluent API documentation headers.
2020-08-04 10:54:28 +02:00