Spring Data JPA Changelog
=========================

Changes in version 1.4.2.RELEASE (2013-10-25)
---------------------------------------------
* CriteriaQuery caching causes problems with Hibernate's alias name generation in multithreaded environments (DATAJPA-396)
* Unnecessary OUTER JOIN are generated for querying one single table (DATAJPA-401)
* Unnecessary OUTER JOIN are generated when sorting on ElementCollection (DATAJPA-403)
* Reference and Javadoc inconsistence - @Modifying.clearAutomatically default value (DATAJPA-406)
* ClasspathScanningPersistenceUnitPostProcessor throws IndexOutOfBoundsException on Windows (DATAJPA-407)
* Add Java Config example to readme.md (DATAJPA-399)
* Release 1.4.2 (DATAJPA-411)

Changes in version 1.4.1.RELEASE (2013-09-09)
---------------------------------------------
* Update to Spring Data Commons 1.6.1 (DATAJPA-400)

Changes in version 1.4.0.RELEASE (2013-09-09)
---------------------------------------------
* The H2 database needs a quoted name parameter in a @Query annotation (DATAJPA-354)
* Not specifying the ASC clause results in a double ORDER BY clause (DATAJPA-375)
* Undeclared dependency on spring aspectj (DATAJPA-367)
* @Transactional (AspectJ) and @Configurable not weaved for @Entity if this @Entity is managed by a JpaRepository (DATAJPA-298)
* Spring Data ignores alternative EntityManager Producer in CDI environment (DATAJPA-388)
* Typo in package-info.java of utility package (DATAJPA-392)
* Remove Hibernate specific test for DATAJPA-107 in PartTreeJpaQueryIntegrationTests (DATAJPA-381)

Changes in version 1.4.0.RC1 (2012-08-01)
-----------------------------------------
* Sort with aggregate properties results in an invalid alias being generated and added to the query (DATAJPA-148)
* Composite Primary Key Class With Foreign Key using IdClass results in TypeMismatchException (DATAJPA-269)
* Sort by property of an associated object doesn't work. Join type should be LEFT OUTER JOIN for sorting on associated objects. (DATAJPA-346)
* @IdClass of @MappedSuperclass is not supported (DATAJPA-348)
* SimpleJpaQuery validates count queries to aggressively (DATAJPA-352)
* ClasspathScanningPersistenceUnitPostProcessor does not resolve mapping files properly (DATAJPA-353)
* @Lock annotation doesn't work on (at least) findOne method (DATAJPA-359)
* Improve SimpleJpaRepository.delete(ID id) by removing superfluous call to exists(…). (DATAJPA-363)
* NullPointerException for manually defined queries with multiple named like expressions (DATAJPA-373)
* Count queries should be issued without ORDER BY clause (DATAJPA-377)
* JpaRepository.findAll(Iterable<ID> ids) should return List<T>, not Iterable<T> (DATAJPA-357)
* Improve QueryDslJpaRepository.findAll(Predicate, Pageable) (DATAJPA-361)
* Explain usage of SpEL Expression in @Query(...) on Repository methods (DATAJPA-368)
* Problems with entities weaved by EclipseLink (DATAJPA-376)
* Add support for TemporalType parameter in named queries (DATAJPA-107)
* Passing parameters from child classes to the parents' annotations (DATAJPA-170)
* Ref doc - explain about save strategy repositories (DATAJPA-344)
* Add missing package-info.java files (DATAJPA-370)
* Release 1.4 RC1 (DATAJPA-379)

Changes in version 1.3.4.RELEASE (2013-07-24)
---------------------------------------------
* Fixed NullPointerException for manually defined queries with multiple named like expressions (DATAJPA-373)
* Added missing package-info.java files (DATAJPA-370)

Changes in version 1.3.3.RELEASE (2013-07-19)
---------------------------------------------
* Sort with aggregate properties results in an invalid alias being generated and added to the query (DATAJPA-148)
* Repository injection fails if BeanPostProcessor depends on repository (DATAJPA-335)
* New LIKE expression handling breaks backward compatibility (DATAJPA-341)
* Wrong calculation of total number of elements when using DISTINCT clause (DATAJPA-342)
* Subselect bug introduced in the snapshot on 20130507 (DATAJPA-343)
* @IdClass of @MappedSuperclass is not supported (DATAJPA-348)
* Improve query validation by creating explicit EntityManager instance (DATAJPA-350)
* @Lock annotation doesn't work on (at least) findOne method (DATAJPA-359)
* Improve SimpleJpaRepository.delete(ID id) by removing superfluous call to exists(…). (DATAJPA-363)
* Open up OSGi manifest for Spring 4 (DATAJPA-339)
* Impove OSGi manifest to allow usage with Spring 4 and Slf4j 1.6.x (DATAJPA-340)
* @QueryHints can not be used in a meta annotation (DATAJPA-345)
* Improve QueryDslJpaRepository.findAll(Predicate, Pageable) (DATAJPA-361)
* Release 1.3.3 (DATAJPA-369)

Changes in version 1.4.0.M1 (2012-06-04)
----------------------------------------
* Upgrade to Querydsl 3.0.0 (DATAJPA-321, DATAJPA-320)
* Support query internal LIKE expressions (DATAJPA-292, DATAJPA-341)
* Support to 'countBy' query methods. (DATAJPA-231)
* Support for case insensitive sorting in Pageable and Sort (DATAJPA-296, DATAJPA-327)
* Code doesn't compile with JDK 6 due to generic method signature (DATAJPA-304)
* XML Schema Validation errors in STS (DATAJPA-314)
* Allow building against Hibernate 4 (DATAJPA-316)
* JpaRepository interface should have @NoRepositoryBean (DATAJPA-317)
* findAll(ids) throws SQL grammar exception when given an empty collection (DATAJPA-332)
* Repository injection fails if BeanPostProcessor depends on repository (DATAJPA-335)
* Release 1.3.1 breaks auditing (DATAJPA-336)
* Wrong calculation of total number of elements when using DISTINCT clause (DATAJPA-342)
* Subselect bug introduced in the snapshot on 20130507 (DATAJPA-343)
* Improve query validation by creating explicit EntityManager instance (DATAJPA-350)
* JpaEntityInformationSupport could inspect potentially available @Version annotated field for null to discover isNew (DATAJPA-119)
* Specifications must support null as a parent Specification (DATAJPA-300)
* Prevent duplicate registration of PersistenceAnnotationBeanPostProcessor (DATAJPA-308)
* CDI repository beans should be application scoped (DATAJPA-319)
* Invalid class name referenced in readme.md (DATAJPA-334)
* Impove OSGi manifest to allow usage with Spring 4 and Slf4j 1.6.x (DATAJPA-340, DATAJPA-339)
* @QueryHints can now be used in a meta annotation (DATAJPA-345)
* Release 1.4. M1 (DATAJPA-351)

Changes in version 1.3.2.RELEASE (2013-05-02)
---------------------------------------------
* Release 1.3.1 breaks auditing (DATAJPA-336)
* findAll(ids) throws SQL grammar exception when given an empty collection (DATAJPA-332)
* Invalid class name referenced in readme.md (DATAJPA-334)

Changes in version 1.3.1.RELEASE (2013-04-16)
---------------------------------------------
* Support query internal LIKE expressions (DATAJPA-292)
* Code doesn't compile with JDK 6 due to generic method signature (DATAJPA-304)
* XML Schema Validation errors in STS (DATAJPA-314)
* Allow building against Hibernate 4 (DATAJPA-316)
* JpaRepository interface should have @NoRepositoryBean (DATAJPA-317)
* Specifications must support null as a parent Specification (DATAJPA-300)
* Prevent duplicate registration of PersistenceAnnotationBeanPostProcessor (DATAJPA-308)

Changes in version 1.3.0.RELEASE (2012-02-07)
---------------------------------------------
* Added support for annotation based auditing (DATAJPA-116)
* SimpleJpaRepository.exists(ID) works now, if ID is an composite key (DATAJPA-266)
* LockModePopulatingMethodInterceptor does not cause memory leak (DATAJPA-268)
* Pageable sorting by join property excludes null matches with Specifications (DATAJPA-277)
* Switch to Logback for test logging (DATAJPA-271)
* Fixed NullPointerException in unit tests (DATAJPA-280)
* Expose Spring Data Commons mapping metamodel (DATAJPA-274, DATAJPA-284, DATAJPA-283)
* Separated integration tests for different persistence providers (DATAJPA-286, DATAJPA-288)
* Polished documentation (DATAJPA-282, DATAJPA-291)
* Improved build (DATAJPA-285, DATAJPA-271)
* Upgraded to JodaTime 2.1 (DATAJPA-293)

Changes in version 1.2.1.RELEASE (2012-02-07)
---------------------------------------------
* SimpleJpaRepository.exists(ID) fails, if ID is an composite key (DATAJPA-266)
* LockModePopulatingMethodInterceptor leak causes memory leak (DATAJPA-268)
* Pageable sorting by join property excludes null matches with Specifications (DATAJPA-277)
* Switch to Logback for test logging (DATAJPA-271)

Changes in version 1.2.0.RELEASE (2012-10-10)
----------------------------------------
* Resolve conflicts between Spring Data Commons Core, JPA and Mongo (DATAJPA-146)
* Improved reference documentation/JavaDoc (DATAJPA-251, DATAJPA-261, DATAJPA-174, DATAJPA-238)
* Upgrade to latest Querydsl 2.8.0, APT 1.0.4 (DATAJPA-259, DATAJPA-260)
* Improved detection of joins to make sure sorting gets applied correctly (DATAJPA-252)
* Fixed application of Specifications.not(…) (DATAJPA-253)
* Fixed detection of total elements when paging over partitioned entities with EclipseLink (DATAJPA-257)

Changes in version 1.2.0.RC1 (2012-07-24)
-----------------------------------------
* Sorting of paginated results is not working when Querydsl is used (DATAJPA-243)
* Namespace XSDs of current release version should refer to repositories XSD in version 1.0 (DATAJPA-239)
* NamedQuery should defer warning logs until the named query is actually detected (DATAJPA-241)
* JpaClassUtils#isEntityManagerOfType is not safe within an OSGI Environment (DATAJPA-244)
* Make Spring 3.1.2.RELEASE default Spring dependency version (DATAJPA-249)
* List compile time dependencies explicitly (DATAJPA-245)

Changes in version 1.1.2.RELEASE (2012-08-24)
---------------------------------------------
* Namespace XSDs of current release version should refer to repositories XSD in version 1.0 (DATAJPA-239)
* NamedQuery should defer warning logs until the named query is actually detected (DATAJPA-241)
* JpaClassUtils#isEntityManagerOfType is not safe within an OSGI Environment (DATAJPA-244)
* List compile time dependencies explicitly (DATAJPA-245)

Changes in version 1.2.0.M1 (2012-07-23)
----------------------------------------
* Added support for JavaConfig support for repositories (DATAJPA-69)
* Upgraded to Hibernate 3.6.10 and EclipseLink 2.4.0 (DATAJPA-229)
* A round of code improvements (DATAJPA-104)
* Throw more appropriate exception if manually defined query in @Query is invalid (DATAJPA-226)
* SimpleJpaRepository.findAll(Iterable<ID> ids) now works when handing in non-Lists (DATAJPA-232)
* OSGi bundle identifier is now org.springframework.data.jpa (DATAJPA-215)
* We now include JPA metamodel classes for our base domain types (DATAJPA-217)
* Improved documentation of how to use native queries with @Query (DATAJPA-227)

Changes in version 1.1.1.RELEASE (2012-07-23)
---------------------------------------------
* Throw more appropriate exception if manually defined query in @Query is invalid (DATAJPA-226)
* SimpleJpaRepository.findAll(Iterable<ID> ids) now works when handing in non-Lists (DATAJPA-232)
* OSGi bundle identifier is now org.springframework.data.jpa (DATAJPA-215)
* We now include JPA metamodel classes for our base domain types (DATAJPA-217)
* Improved documentation of how to use native queries with @Query (DATAJPA-227)
* Upgraded to Spring Data Commons 1.3.2.RELEASE (DATAJPA-233)

Changes in version 1.1.0.RELEASE (2012-05-16)
---------------------------------------------
* JPA Repository can get typing of @Query annotated findXXX methods wrong (DATAJPA-169)
* SimpleJpaRepository.delete(ID id) should validate entity/record existance prior to issue delete command (DATAJPA-177)
* StackOverflowError during query parsing if repository method does nots match with a property (DATAJPA-179)
* Typos in log message when named query is used with a Pageable (DATAJPA-186)
* MergingPersistenceUnitManager potentially adds classes multiple times (DATAJPA-189)
* JpaQueryExecution started to throw NullPointerException if pageable is null (DATAJPA-201)
* Typo in reference (DATAJPA-153)
* Readme file references old Spring Data JPA version (DATAJPA-155)
* Ability to specify template when create QueryDSL JPAQuery (DATAJPA-181)
* Provide more safety in custom @Queries with named @Params (DATAJPA-185)
* Log level used for message generated with named query with a Pageable parameter lower than the actual severity of the issue (DATAJPA-187)
* MergingPersistenceUnitManager should merge mapping file locations as well (DATAJPA-190)
* Adapt changes in CrudRepository interface (DATAJPA-191)
* @Query(nativeQuery=true) can't return List<Integer> (DATAJPA-207)
* Add support for newly introduced StartingWith, EndingWith and Containing keywords (DATAJPA-180)
* Support Before and After keywords for query creation (DATAJPA-188)
* Minor typos in readme.md (DATAJPA-192)
* Upgrade to Spring Data Commons 1.3.0.RC1 (DATAJPA-193)
* Upgrade to Spring Data Commons 1.3.0.GA (DATAJPA-194)
* Upgrade to Querydsl 2.5.0 (DATAJPA-203)
* Sonar build is failing (DATAJPA-210)
* Document CDI integration (DATAJPA-211)
* Release 1.1 GA (DATAJPA-212)

Changes in version 1.1.0.RC1 (2012-02-03)
-----------------------------------------    
* Support for locking (DATAJPA-73)
* Added CDI integration for repositories (DATAJPA-136)
* Support for @IdClass in entities (DATAJPA-50)
* Support for LessThanEqual and GreaterThanEquals keywords in query methods (DATAJPA-108)
* Support for True/False as query keywords (DATAJPA-132)
* Queries derivated from methods now correctly bind null values using IS NULL (DATAJPA-121)
* Added PersistenceUnitPostProcessor to scan a package for JPA entities with Spring 3.0 (DATAJPA-123, DATAJPA-124)
* Improve performance for pagination queries if inexistant page is requested (DATAJPA-124)
* Don't apply query hints to count queries for pagination (DATAJPA-54)
* Fixed count query creation for manually declared queries with "order by" clause (DATAJPA-142)
* @OneToOne mappings in AbstractAuditable should rather be @ManyToOne ones (DATAJPA-120)
* Alias detection now works correctly with entity names containing numbers (DATAJPA-110)
* Added @NativeQuery annotation for repositories to trigger native queries (DATAJPA-117)
* Allow customization of NamedQuery to be used in @Query annotation (DATAJPA-129)
* Let deleteAll() use cascading deletes and introduced deleteAllInBatch() (DATAJPA-137)
* Fixed query creation for Comparable values (DATAJPA-99)
* The SimpleJpaRepository's deleteAll() does not call em.clear() anymore (DATAJPA-111)
* JpaMetamodelEntityInformation now deals with mapped superclasses as well (DATAJPA-141)
* MergingPersistenceUnitManager now works with Spring 3.1.0 DefaultPersistenceUnitManager (DATAJPA-138)
* Provide strategy interface to customize the date being set while auditing (DATAJPA-9)
* Improve exception message when crating a query from a method name fails (DATAJPA-159)
* Imporve injection of the EntityManager in QueryDslRepositorySupport (DATAJPA-135, DATAJPA-113)
* Consolidate Expression creation for property references and sort orders (DATAJPA-103)
* Fixed schema errors appearing in STS (DATAJPA-160)
* Change build system to build against Spring 3.0.x / 3.1 / 3.2 (DATAJPA-127)
* Upgraded dependency versions (Spring 3.0.7, Querydsl 2.3.0, Hibernate 3.6.9, EclipseLink 2.3.2, OpenJPA 2.1.1, AspectJ 1.6.12) (DATAJPA-102, DATAJPA-150, DATAJPA-145, DATAJPA-115)

Changes in version 1.0.3.GA (2012-02-03)
----------------------------------------
* MergingPersistenceUnitManager doesnt work with Spring 3.1.0 DefaultPersistenceUnitManager (DATAJPA-138)
* Spring Data- JPA Schema validation error in STS (DATAJPA-160)
* Improve exception message when crating a query from a method name fails (DATAJPA-159)

Changes in version 1.0.2.GA (2011-12-06)
----------------------------------------
* Fixed query creation for Comparable values (DATAJPA-99)
* Fixed alias detection when entity name contained number (DATAJPA-110)
* SimpleJpaRepository's deleteAll() does not call em.clear() anymore (DATAJPA-111)
* Upgraded to Querydsl 2.2.5 (DATAJPA-102, DATAJPA-115)
* Fixed auditor mappings in AbstractAuditable (DATAJPA-120)
* Consolidate Expression creation for property references and sort orders (DATAJPA-103)
* Fixed dependency injection in QueryDslRepositorySupport (DATAJPA-113)

Changes in version 1.1.0.M1 (2011-09-05)
----------------------------------------
* Added ability to ignore case in derived method names (DATAJPA-92)
* Upgraded dependency to Spring Data Commons 1.2.0.M1

Changes in version 1.0.1.GA (2011-09-05)
----------------------------------------
* Fixed pagination for queries using group-by clause (DATAJPA-86)
* Fixed NoSuchElementException for queries using dynamic sorting (DATAJPA-90)
* JpaEntityInformationSupport.getMetadata(...) throws IllegalArgumentException if entity not found in JPA metamodel (DATAJPA-93)
* Sort handed via Pageable instance is now again regarded by query execution (DATAJPA-94)
* Fixed creating CriteriaQuery instances for some keywords when deriving queries from method names (DATAJPA-96)
* Fixed manifest version reference of javax.annotation (DATAJPA-79)
* Improved performanve of SimpleJpaRepository.exists(…) by not loading the entity (DATAJPA-81)
* Updated reference documentation covering persistence exception translation, custom namespace attributes (DATAJPA-91, DATAJPA-88, DATAJPA-80)
* Reformatted sources with Spring Data Eclipse formatter and added settings to project (DATAJPA-98)

Changes in version 1.0.0.GA (2011-07-21)
----------------------------------------
* Updated to Spring Data Commons 1.1.0.RELEASE - (DATACMNS-53, DATACMNS-49)
* Upgrade to Querydsl 2.2.0 (DATAJPA-78, DATACMNS-53)
* Improved performance by caching CriteriaQuery creation if possible (DATAJPA-71)
* Fixed version range for Spring Data Commons packages in template.mf (DATAJPA-72)
* Fixed count query execution for pagination queries with manually defined query (DATAJPA-77)
* Polished documentation

Changes in version 1.0.0.RC1 (2011-06-21) - https://jira.springsource.org/browse/DATAJPA/fixforversion/11869
-----------------------------------------
* Expose findAll(Specification<T> spec, Sort sort) in JpaSpecificationExecutor (DATAJPA-48)
* Improved target domain class detection for queries returning void and numeric values (DATAJPA-44)
* Improved extensibility of QueryDslJpaRepository (DATAJPA-39)
* Configured Maven build to include Bundlor generated MANIFEST.MF (DATAJPA-42)
* Improved performance of query execution by uhsing method.getAnnotation(…) instead of AnnotationUtils.getAnnotation(…)
* Fixed exception thrown in QueryDslJpaRepository#findAll(Predicate predicate, Pageable pageable) if no result found (DATAJPA-61, DATACMNS-23)
* Improved error message in JpaQueryMethod (DATAJPA-59, DATAJPA-60)
* Querydsl dependency is now optional (DATAJPA-62)
* Improved isNew detection in AuditingEntityListener (DATAJPA-68)
* Documented In and NotIn keywords (DATAJPA-56)
* Updated documentation regarding Specifications usage (DATAJPA-43)
* Added MergingPersistenceUnitManager (DATAJPA-38)
* Added support for searching by Specification and Sort (DATAJPA-48)
* Automatic query creation now uses ParameterExpression binding over literal binding (DATAJPA-64)
* Changed clearAutomatically attribute of @Modifying to default to false (DATAJPA-31)
* JpaPersistableEntityInformation now uses Persistable.isNew(…) (DATAJPA-58)

Changes in version 1.0.0.M2 (2011-03-24) - https://jira.springsource.org/browse/DATAJPA/fixforversion/11800
----------------------------------------
* Dynamic sorting functionality (through Sort query method parameter) works again
* Added support for 'Distinct' (DATACMNS-15)
* Added support for 'In' and 'NotIn' (DATAJPA-30)
* Adapted new metadata API (DATAJPA-32, DATACMNS-17)
* Support for XML based entity mapping (DATAJPA-28)
* @Query annotated queries get validated on Query meta-model creation (DATAJPA-14)
* Fixed dependency scopes and missing repository declarations (DATAJPA-33, DATAJPA-26)
* Adapted meta-model API from Commons module (DATAJPA-32)
* Added support for QueryDsl (DATAJPA-8)

Changes in version 1.0.0.M1 (2011-02-10) - https://jira.springsource.org/browse/DATAJPA/fixforversion/11786
----------------------------------------
* Moved JPA sepcific code from Hades into Spring Data JPA (functional equivalent of Hades 2.0.2) building on common functionality in Spring Data Commons