Running all tests with
```
./mvnw clean install -Pall-dbs
```
or similar now requires an appropriate `container-license-acceptance.txt` to be on the classpath.
In order to ignore the tests that require an explicit license acceptance one may add the maven profile `ignore-missing-license` like so
```
./mvnw clean install -Pall-dbs,ignore-missing-license
```
Original pull request: #239.
Oracle integration tests where failing when the docker container was freshly started,
as it happens every time on CI.
The reason was mainly a misuse of Awaitility.ignoreException(Class) which only ignores exception of exactly the class provided, not of subtypes.
Apart from fixing this for Oracle the complete logic for verifying the connection was moved to DataSourceConfiguration so other database use it as well in a consistent manner.
Original pull request: #237.
Rename RequiredFeature to EnabledOnFeature to align with JUnit terminology. Use RunWith instead of Spring rules. Reformat code. Update documentation.
Original pull request: #232.
An Oracle database is started in Docker using Testcontainers.
Tests that don't work yet are skipped using the TestDatabaseFeatures which allows central control, which database supports which feature.
A suitable oracle image is deployed on DockerHub as "springci/spring-data-oracle-xe-prebuild:18.4.0".
The official Oracle docker images as described here https://github.com/oracle/docker-images/blob/master/OracleDatabase/SingleInstance/README.md are not suitable since it needs about 15min to start and also TestContainers seems to break it by trying to us it to early.
The referenced image was created based on these instructions: https://github.com/oracle/docker-images/tree/master/OracleDatabase/SingleInstance/samples/prebuiltdb
The following features don't yet work for Oracle:
* Loading of date like properties.
* Ids with custom names.
* Array support.
* Boolean properties.
* BigDecimals and BigInteger is limited to what fits into Oracles NUMBER data type.
* Entities that use a join during load time, i.e. with a one to one relationship.
Original pull request: #232.
This changes the behavior of the JDBC driver from always returning `MySQL` for product name to a more involved logic which might result in it returning `MariaDB`.
Original pull request: #231.
Using Criteria.from(…) with multiple Criteria objects now uses properly AND combination along with group nesting to render a correct criteria. Previously, the INITIAL combinator in groups caused a mapping exception.
Custom value types like outlined below can now server as id property
public class IdValue {
String id;
}
public class DomainType {
@Id
IdValue id;
String value;
// ...
}
Enabled access to identifier parts by String arguments in order to make usage with MyBatis feasable.
Properly pass identifier information to MyBatis for insert statements.
Original pull request: #218.
Using `execute` instead of `query` since we are not interested in the results.
Refactoring of the concurrency tests.
Make the concurrency tests run with all databases.
Added support for DB2.
Moved AnsiDialect to the main sources so it can be referenced in other Dialects.
Original pull request: #196.
Introduces infrastructure to obtain locks and uses them to acquire locks on the table of the aggregate root before deleting references.
Without this lock deletes access non root entities before the aggregate root, which is the opposite order of updates and thus may cause deadlocks.
Original pull request: #196.
Move container initialization from static initializer into createDataSource() to not trigger container start when loading the class.
Add TestExecutionListener to ignore tests if the license for a container was not accepted. Add Awaitility to delay test execution until the database is ready so we avoid strange failures due to a delayed container startup.
Fix generics, since tags, author tags. Reformat code.
Original pull request: #213.
Db2Dialect added in order to support DB2.
Added test configuration files.
Adapted some tests to make them properly work with DB2
QueryAnnotationIntegrationTests converted into an Hsqldb only test since it is next to impossible to make it work across databases since it heavily depends on database and driver specifics.
Removed license acceptance file from the repository in order to not accept a license in the name of someone forking the repository.
For the CI build an appropriate file gets created on the fly.
Original pull request: #213.
Moved Identifier and IdentifierBuilder to ...jdbc.core.convert.
Moved RelationaAuditingCallback to ..mapping.event.
Improved DependencyTests to properly consider "relational" a main module.
The select list must include columns for 1:1 relationships.
The implementation is copied from SqlGenerator and will be unified in the near future.
Original pull request: #209.
We now reject criteria predicates for collections, maps and references. The select list selects all columns until DATAJDBC-523 is solved.
Original pull request: #209.
Move JdbcRepositoryQuery into repository.query package. Split JdbcRepositoryQuery into AbstractJdbcQuery and StringBasedJdbcQuery.
Add QueryMapper for mapping of Criteria.
Initial support for query derivation.
Emit events and issue entity callbacks only for default RowMapper.
Custom RowMapper/ResultSetExtractor are in full control of the mapping and can issue events/callbacks themselves.
Update reference documentation.
Original pull request: #209.
Without this change we see cyclic dependencies between modules (i.e. subpackages).
The following subpackages had a cycle:
repository.query and repository.query.parser
PartTreeJdbcQuery and JdbcQueryCreator(repository.query from jdbc) depend on PartTree (repository.query.parser)
AbstractQueryCreator (repository.query.parser) depends on ParameterAccessor (repository.query from commons)
This change changes the definition of a module, bundling all the modules above into one module (repository).
Alternative changes that should fix the problem:
1. Move ParameterAccessor to a different (probably new package)
2. Move AbstractQueryCreator to a different (probably new package)
3. org.springframework.data.jdbc.repository.query to e.g. org.springframework.data.jdbc.repository.query.jdbc
Original pull request: #209.