The ordering of UDT now considers all UDTs before creating the final creation order to consider dependencies between UDTs that refer to nested UDTs.
Previously, UDT ordering was already built from iteration over individual UDTs so that UDTs that had dependencies on already seen UDTs wheren't considered properly.
To resolve XSD files properly from the classpath, their HTTPS reference must be present in the spring.schemas to avoid internet interaction for resolving an XSD file.
CassandraAdminTemplate can now be constructed by passing either just a Session or CqlOperations and CassandraConverter to consistently expose the same constructors as its superclass CassandraTemplate.
We now allow configuration of CodecRegistry in CassandraMappingContext to reuse the configured instance instead of using the default CodecRegistry instance.
Replace AtTest(expected = …) and ExpectedException with the corresponding AssertJ assertThatExceptionOfType(…) and assertThatIllegalArgumentException().isThrownBy(…).
We now properly populate composite key properties when the key object is set through the entity constructor. Previously, key properties where left uninitialized (properties were not populated) when the key object was created in the code path to be injected as entity constructor argument. Key properties were only set in the case where the key also was be constructed with constructor arguments.
We now support query derivation for delete queries using delete…By in method declarations.
interface PersonRepository extends Repository<Person, String> {
void deleteWithoutResultByLastname(String lastname);
boolean deleteByLastname(String lastname);
}
String-based queries can now be marked as idempotent. Also, SELECT queries defined via @Query are also considered idempotent to make these retryable.
interface PersonRepository extends Repository<Person, String> {
@Query("SELECT * FROM person WHERE lastname = ?0;") // idempotent by default
Person findByLastname(String lastname);
@Query(value = "UPDATE person SET lastname = ?0", idempotent = Query.Idempotency.IDEMPOTENT)
void updatePerson(String name);
}