DATAJPA-386 - Prepare for next iteration.

Updated pom.xml to refer to the current version of SD Commons 1.7.0.BUILD-SNAPSHOT.
DATAJPA-399 - Add Java Config example to readme.md.

Added java config and replaced the xml version.
Added reference to new SD JPA Guide as well as Spring-Boot and the latest version of SD JPA 1.4.1.
DATAJPA-398 - Added test case for overriding CRUD method with @Query.

Added test case to verify that it is possible to adjust the query of well known repository interface methods like findAll() via @Query.

Original pull request: #38.
DATAJPA-403 - Improve predicate building by reusing existing joins if possible.

QueryUtils now checks already existing joins and reuses them when building expressions. Inspired by the pull request #41 by Alexandre Payment but polished and added integration test to make sure the joins really get reused.
DATAJPA-401 - Non-optional associations don't trigger join creation anymore.

When building Expression instances for attribute traversals we now inspect the mapping annotation to detect non-optional associations and prevent an extra left join from being created. This is because the join is only necessary to not drop null values from the result.

Added integration tests for Hibernate, EclipseLink and OpenJpa. EclipseLink needs a bit of special treatment as it exposes the inner join being created for a plain ….get(…) attribute traversal.
DATAJPA-389 - Introduce NativeSqlQuery type for native sql queries.

Extracted the functionality specific to the handling of native queries out of SimpleJpaQuery and moved that to the new NativeJpaQuery type. Moved common functionality to AbstractStringBasedJpaQuery and used that as a new base class for SimpleJpaQuery and NativeJpaQuery. Introduced JpqQueryFactory to centralize construction of JpaQuery objects. Renamed getQuery() method in StringQuery to getQueryString().

Original pull request: #36.
DATAJPA-396 - Fixed potential multi-threading issues in PartTreeJpaQuery.

The CriteriaQuery implementations unfortunately is not thread-safe for some persistence providers. E.g. Hibernate changes the state of it's implementation during the first attempt to use the instance. This causes multi-threading issues if we cache the query instance for later usage (as the instance might be used concurrently).

We now synchronize the first usage of the cached CriteriaQuery instance to guard against this situation.

Original pull request: #42.
DATAJPA-406 - Fix documentation of default value in @Modifying.

Corrected documentation to reflect the actual state of the @Modifying annotation which is that the clearAutomatically attribute is set to false by default. The implications of setting this attribute to true (which causes all pending non-flushed changes to be dropped) are now stated clearly.

Original pull request: #43.
DATAJPA-407 - Fixes potential IndexOutOfBoundsException in ClasspathScanningPersistenceUnitPostProcessor.

So far, ClasspathScanningPersistenceUnitPostProcessor threw an IndexOutOfBoundsException on Windows as the OS-specific file separator doesn't match the forward slash used in the URI. This is fixed by modified scanForMappingFileLocations() to use '/' to build up the resource path.

Original pull request: #44.
DATAJPA-409 - Added unit test for count query creation for nested references.
DATAJPA-83 - Added getOne(ID id) to JpaRepository.

Added a getOne(ID id) method to both JpaRepository as well as SimpleJpaRepository to be able to obtain references to entities (as implemented by EntityManager.getReference(…)).
DATAJPA-416 - Add support for nested repositories.

Support for considering nested repository interfaces can now be configured on the EnableJpaRepositories annotation via the considerNestedRepositories property. Previously nested repository definitions were ignored by the repositories infrastructure. This depends on DATACMNS-90.

Original pull request: #46.
DATAJPA-416 - Polishing.

Refer to the JPA ticket instead of the DATACMNS one. Use Repository instead of JpaRepository in test cases. Some code formatting.

Original pull request: #46.
DATAJPA-415 - Convert array parameter values to Collection if necessary.

In order to support query methods with array-typed parameters (e.g. parameters passed in as varargs) correctly we have to convert such an array into a collection. Previously we passed those parameters as is which led to Exceptions in EclipseLink and Hibernate, e.g. Hibernate: IllegalArgumentException: Encountered array-valued parameter binding, but was expecting [java.lang.Integer].
DATAJPA-415 - Polishing.

Simplified implementation of ParameterBinder.convertToCollectionIfNecessary(…).

Added a simpler test case for plain query execution and ignored that for EclipseLink and OpenJpa as it fails with both the EclipseLink and OpenJpa versions we currently rely on. See the ignored test cases for links to bug reports.

Original pull request: #45.
DATAJPA-481 - Upgraded to Spring Framework 3.2.4.

Upgraded to Spring Data Build 1.3.0.BUILD-SNAPSHOT to benefit from upgrade to Spring Framework 3.2.4.
DATAJPA-481 - Upgraded to Spring Framework 3.2.4.

Upgraded to Spring Data Build 1.3.0.BUILD-SNAPSHOT to benefit from upgrade to Spring Framework 3.2.4.

Made the sample mapping file in test folder a valid XML document to prevent Eclipse from marking it as error.
DATAJPA-405 - Guard against null predicates on query creation.

We now only call CriteriaQuery.where(…) if the predicate we handle is a non-null value. Adapted Jpa(Count)QueryCreator accordingly.