We now evaluate @Value annotations in persistence constructors to compute values when creating object instances. AtValue can be used to materialize values for e.g. transient properties. Root properties map to the ResultSet from which an object gets materialized.
class WithAtValue {
private final @Id Long id;
private final @Transient String computed;
public WithAtValue(Long id,
@Value("#root.first_name") String computed) { // obtain value from first_name column
this.id = id;
this.computed = computed;
}
}
We now support empty IN lists by rendering a condition that evaluates to FALSE using 1 = 0. For NOT IN, we render a condition that evaluates to TRUE using 1 = 1.
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.
Original pull request: #233.
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.