DATAJPA-477 - Avoid query creation in PagedExecution if count query returns 0.

We now skip the query creation if we detect that the preceding count query returned 0 or no results. Previously we always created a query in every case even if it was not necessary.

Original pull request: #113.
DATAJPA-605 - JpaPersistentProperty implementation now detects JPA's @Version annotation.

Added override for JpaPersistentPropertyImpl.isVersionProperty() to also consider properties annotated with JPA's @Version annotation as version property.

Related pull request: #108.
DATAJPA-623 - Fixed package cycles accidentally introduced.

Moved JpaEntityMetadata and DefaultJpaEntityMetadata to query package to avoid a cyclic dependency to it. Jpa21Utils now also resides in the query package as the util package must not depend on other project packages.

Updated the Sonargraph architecture description by adding new architectural artifacts for mapping, the CDI support and utilities. Defined allowed dependencies more strictly to detect architecture violations more aggressively.
DATAJPA-624 - Fix SonarQube warnings as far as possible/reasonable.

Added private constructor to Jpa21Utils to prevent instantiation. Removed unused parameter query in Querydsl.toOrderSpecifier(…). Inline currently unnecessary computeParameterValue(…) method in ParameterBinder. Return cached crudMethodMetadata instead of always creating and caching a new instance in CrudMethodMetadataPostProcessor. Removed unnecessary final modifier from DefaultCrudMethodMetadata. Introduced constant for error message in SimpleJpaRepository as well as for join alias group index in QueryUtils. Prevent instantiation of BeanDefinitionNames by making it an interface instead of a class.

Reduced the usage of EvaluationContextProvider in JpaQueryLookupStrategy implementation. Removed unnecessary fixed sized set initialization in JpaQueryMethod static initializer block. Made JpaResultConverters final since it is not meant to be sub-classed. Avoid potential unsafe reference based equality check in StringQuery/hasPosition(..). Removed dead store in ClasspathScanningPersistenceUnitPostProessor.scanForMappingFileLocations. Encapsulated access to fields in EntityManagerFactoryBeanDefinition.

Original pull request: #114.
DATAJPA-624 - Polished fixes for SonarQube warnings.

Added missing author tag in BeanDefinitionNames. Instead of providing an accessor for EvaluationContextProvider in AbstractQueryLookupStrategy we now only use the property in the type that actually needs it. Removed obsolete method in ParameterBinder. Polished formatting and JavaDoc in EntityManagerFactoryBeanDefinition.

Original pull request: #114.
DATAJPA-627 - Typo in BeanDefinitionNames.

Fixed bean name of jpaMa{ppp->pp}ingContext.

Original pull request: #117.
DATAJPA-630 - Add IdentifierAccessor implementation that avoids proxy resolution for id lookups.

We now customize the IdentifierAccessor returned from JpaPersistentEntity.getIdentifierAccessor(…) to allow the identifier lookup use persistence provider specific means. This is needed to make sure we lookup identifiers for proxies correctly for which a field value lookup would not succeed (as the providers do not pre-populate the identifier field).
DATAJPA-622 - AbstractPersistable.isNew() is now annotated with @Transient.

We now mark AbstractPersistable.isNew() property as @Transient for JPA in order to make sure that no JPA provider complains about a missing setter in case a user derives a domain entity from AbstractPersistable. Without this it isn't possible to bootstrap a PersistenceContext.

Original pull request: #115.
DATAJPA-622 - Polishing.

Renamed CustomAbstractPersistableIntergrationTests to AbstractPersistableIntergrationTests. Reordered declarations in persistence(2).xml to make sure we retain alphabetic sorting.

Original pull request: #115.
DATAJPA-628 - Use a shared SpelParser instead of recreating it.

We now use a shared SpelExpressionParser and propagate this through the String-based JpaRepositoryQuery implementations to avoid reinstantiations.

Cleaned up ParameterBinder inheritance hierarchy by merging (and removing) ExpressionAwareParameterBinder into SpelExpressionStringQueryParameterBinder.

Original pull request: #121.
DATAJPA-628 - Polishing.

Made central SpelExpressionParser static.

Original pull request: #121.
DATAJPA-523 - Make Specifications implement Serializable.

Prepare issue branch.
DATAJPA-523 - Make Specification implement Serializable.

Specifications now implements Serializable to be able to transfer them across systems boundaries. Introduced special Serializable Specification types for composed and negated Specifications.

Note that currently only Hibernate and EclipseLink expression structures implement Serializable - OpenJPA's don't.

Original pull request: #86.