Merge basic converters into Mapping…Converters and introduce deprecated variant to provide guidance for migration off the deprecated types.
Cleanup no longer required code.
Original pull request #1618
See #1554
The failsafe plugin only fails during it's verify goal, not when actually executing the tests.
The goal is by default added to the verify phase.
But for the database tests this adds it to the integration-test phase.
This ensures that the build fail as soon a test for one database fails.
Closes#1637
BatchJdbcOperations is still there, but deprecated, and not used except for deprecated places kept for backward compatibility.
This is possible since Spring Framework made the features offered by `BatchJdbcOperations` part of `NamedParameterJdbcOperations`.
Closes#1616
Remove Jetbrains annotation usage.
Simplify code, remove code that is commented out, extract methods, pass PersistentEntity as argument instead of creating instances that hold PersistentEntity as field to align the class lifecycle with its contextual usage.
Refactor AggregateReader lifecycle, use a single instance as there is no entity-specific state attached to AggregateReader.
Add Javadoc.
See #1448
Original pull request: #1622
Simplify ValueFunction mapping. Remove invariants of findBy SQL generation in favor of the Condition-based variant. Reduce visibility. Change return value of AggregateReader to List
See #1601
Original pull request: #1617
Introduce composed annotations and conditions to deduplicate annotations required for a test, to express database runtime conditions and database activation.
Simplify test configuration.
Split tests into unit test and integration test run.
Original pull request #1621Closes#1620
This properly fixes the test setup, taking into account that @ActiveProfile by default replaces any profiles set via environment variable or system property.
It turns out that the hasNext calculation in RowDocumentIterator was wrong because
a) isBeforeFirst and isBeforeLast return both false when the ResultSet is empty.
b) isBeforeFirst and isBeforeLast aren't necessarily implemented for all ResultSets and for example DB2s ResultSet implementation don't support it by default.
Closes#1615
Add sophisticated converter to read aggregates from a RowDocument including support for maps, collections, subdocuments, and embeddables considering registered converters.
Use ResultSetRowDocumentExtractor to extract result multi-sets into RowDocument and then later apply object mapping.
Original pull request #1604Closes#1586
The construction of the DataAccessStrategy happened before the MappingContext was properly setup.
This is now fixed.
A test utilizes Single Query Loading, if it activates the profile singleQueryLoading
Closes#1606
Push JDBC-specific simple types into JdbcPostgresDialect instead of having these in the top-level dialect that shouldn't be tied to any driver technology.
Introduce profile to run Postgres tests only.
Transform the tabular structure into a graph of RowDocument associated with nested documents and lists.
Add container license acceptance for updated container images.
See #1446
See #1450
See #1445
Original pull request: #1572
Extract Single Query Loading branching to SingleQueryFallbackDataAccessStrategy. Inline AggregateReaderFactory into SingleQueryDataAccessStrategy. Move CachingSqlGenerator to AggregateReader as caching root.
Introduce DataAccessStrategyFactory to encapsulate configuration.
Fix Javadoc tag ordering. Remove superfluous MappingContext parameters when Converter is available. Simplify code. Reformat code.
Reorder Functions methods. Tweak Javadoc, move composite function into SingleQuerySqlGenerator.
See #1446
See #1450
See #1445
Original pull request: #1572
Single Query Loading loads as the name suggests complete aggregates using a single select.
While the ultimate goal is to support this for all aggregates, this commit enables it only for simple aggregate and also only for some operations.
A simple aggregate is an aggregate that only reference up to one other entity and does not have embedded entities.
The supported operations are those available via `CrudRepository`: `findAll`, `findById`, and `findAllByIds`.
Single Query Loading does NOT work with the supported in memory databases H2 and HSQLDB, since these do not properly support windowing functions, which are essential for Single Query Loading.
To turn on Single Query Loading call `RelationalMappingContext.setSingleQueryLoadingEnabled(true)`.
Closes#1446
See #1450
See #1445
Original pull request: #1572
AggregatePath replaces PersistentPropertyPathExtension.
It gets created and cached by the RelationalMappingContext, which should be more efficient and certainly looks nicer.
Closes#1525
Original pull request #1486
The new image is configured as compatible with the old image, which it actually isn't.
The default database names are different, so we also set a database name that is different both from the one used by TestContainers as default and the one used by the Docker image.
If the TestContainers default is used the database is not found, because the image just creates the default one and the name doesn't mach.
If the Docker image default is used, the image creates its default database and then tries to create it again, which fails.
These workarounds may be removed once TestContainers properly supports the new image.
Closing #1528
We now specify runtime bean references to qualify the desired mapping context type instead of using autowiring that can match the wrong mapping context.
Closes#1143