PersistentPropertyPath got a few new methods to build String representations of it. Beyond that we introduced accessor methods for the base and leaf path as well as the ability to detect base paths and create path extensions based on a given base path.
Refactored MappingContext.getPersistentPropertyPath(…) to return a PersistentPropertyPath instance which allows iterating over the properties returned for the Property delivered as well as creating dot paths from it.
Renamed Property to PropertyPath and moved it into mapping package.
Always setting a transaction manager breaks repository factories that do not expose a transactionManager property. Thus it's now the responsibility of the concrete BeanDefinitionParser to parse transaction manager configuration.
Setting a default transaction manager bean name increases performance of transaction interception as we can lookup the PlatformTransactionManager by name rather than by type.
ConcurrentHashMap does not allow null values to be set so we now store Void.class as custom null-value instead and default this value back to null in predictBeanType(…).
Removed dependency from Parameter to Parameters as it is obsolete. Let ClassUtils return component type for Iterables piped into getReturnedDomainClass(…).
The query parsing subsystem now supports using IgnoreCase when referencing String parameters, e.g.:
findByUsernameIgnoreCase(String username);
Both 'IgnoreCase' and 'IgnoringCase' are supported. If you'd like to entirely ignore cases for all String property references add 'AllIgnoreCase' or 'AllIgnoringCase' to the query method.
We have to lock PersistentEntity creation as instances could be prematurely handed out and iteration over the properties might interfere new properties being added to the Set iterated over.
QueryMethod now provides a protected method to allow customization of the Parameters instance being used. Removed final modifier from Parameters and Parameter classes to allow extension. Refactored Parameter to be based on Spring's MethodParameter for more encapsulation. Added callback method to Parameters to allow customizing Parameter instance creation. Added protected method to ParametersParameterAccessor to get any parameter value by index.