Commit Graph

407 Commits

Author SHA1 Message Date
Oliver Gierke
f2bc6fc466 DATAJPA-442 - Enable CDI repositories to be instantiated eagerly.
From the CDI extension we now use the callback newly introduced in Spring Data Commons to enable it to trigger eager initialization.

See also: DATACMNS-416.
2014-01-13 12:04:14 +01:00
Oliver Gierke
8a4c04a524 DATAJPA-446 - Removed generic types from AuditingEntityListener. 2014-01-12 19:25:42 +01:00
Oliver Gierke
3f4eecf97e DATAJPA-443 - Upgraded to Hibernate 4.2.8 and 4.3.0. 2014-01-12 19:25:42 +01:00
Oliver Gierke
516977f722 DATAJPA-428 - Upgraded to snapshot of Spring Data build parent. 2014-01-12 19:25:42 +01:00
Thomas Darimont
5e8928f54f DATAJPA-444 - Improve detection of PersistenceProvider implementations.
Since the location of the Hibernate EntityManager implementation changed in Hibernate 4.3 to org.hibernate.jpa.HibernateEntityManager, we now support org.hibernate.jpa.HibernateEntityManager as well as  org.hibernate.ejb.HibernateEntityManager as a Hibernate PersistenceProvider.

Original pull request: #55.
2014-01-08 16:36:08 +01:00
Oliver Gierke
44994ff3e9 DATAJPA-435 - Let Sonar reuse existing test reports. 2013-12-11 13:21:54 +01:00
Thomas Darimont
429538fba8 DATAJPA-410 - Improved documentation on jpa:repository namespace.
We now mention that we require a bean with name transactionManager to be present if no transaction-manager-ref is defined.

Original pull request: #47.
2013-12-11 00:51:09 +01:00
Komi Serge Innocent
a0a98dfc57 DATAJPA-420 - Fixed count projection for manual queries with projections.
Original pull request: #52.
2013-12-10 23:13:56 +01:00
Oliver Gierke
ae10332b18 DATAJPA-430 - Tweaks to be compatible with Hibernate 4.3.
Latest Hibernate 4.3 releases have changes some behavior and internals slightly. Adapted the test cases accordingly and added another guard in JpaMetamodelEntityInformation to adhere to the new behavior.

Added build profile to be able to build against Hibernate 4.3.
2013-12-09 14:44:13 +01:00
Oliver Gierke
5d6e44d379 DATAJPA-12 - Simplified build setup for meta-model creation.
Consolidated the generation of the static meta-model for test classes into the Querydsl APT plugin.
2013-12-08 19:30:54 +01:00
Oliver Gierke
1d6806b979 DATAJPA-12 - Design changes in JpaSort.
Decided to go with a simpler way of building up attribute paths on JpaSort to avoid the need to work with JPA Path instances (and thus the EntityManager) entirely. Added shortcut constructors to JpaSort that take a vararg of Attribute or PluralAttribute respectively.

Interestingly, the test cases still have to be integration tests as the  fields in the statically generated meta-model are null until the EntityManagerFactory bootstrap process enhances them to contain actual values. So no real unit tests unfortunately.

Consolidated tests cases for MailMessageRepository into one class, especially to avoid the configuration QueryDslRepositorySupportIntegrationTests to interfere with the newly added tests. Also rather use SampleConfig configuration class to allow the test framework's caching mechanism to kick in.

Original pull request: #54.
2013-12-07 13:10:29 +01:00
Thomas Darimont
692b2382bf DATAJPA-12 - Added Sort implementations for JPA meta-model API and Querydsl.
Introduced JpaSort for sorting by JPA meta-model attribute paths. Introduced JpaMetaModelPathBuilder that can be used to ease the construction of Jpa meta-model attribute paths by the provided static factory method. Added new testing scenario (MailMessage and MailSender) to avoid to mess up the existing sample classes. Enabled static JPA meta-model generation in pom.xml.

Enhanced Querydsl to generate appropriate left joins when sorting by nested (singular) association properties. Converted XML configuration for QueryDslRepositorySupportIntegrationTests into JavaConfig.

Original pull request: #54.
2013-12-07 13:09:31 +01:00
Thomas Darimont
e51add8c76 DATAJPA-427 - Generate left joins for referenced associations in sort expressions.
Previously sorting by property of an associated object generated an inner join instead of a left join with QueryDsl and Hibernate. That excluded records that had null values on their join columns. We now generate appropriate left joins if we detect associations in the sort property expression.

Ignored test cases for EclipseLink since eclipse link generates an inner-join instead of an outer-join to fetch  associations in order by. Filed: https://bugs.eclipse.org/bugs/show_bug.cgi?id=422450

Original pull request: #53.
2013-12-04 13:59:07 +01:00
Spring Buildmaster
32f90661e0 DATAJPA-428 - Prepare next development iteration. 2013-11-19 04:29:39 -08:00
Spring Buildmaster
4df4d3eecb DATAJPA-428 - Release version 1.5.0.M1. 2013-11-19 04:29:37 -08:00
Oliver Gierke
8aafc4fb6c DATAJPA-428 - Prepare release 1.5.0.M1.
Upgraded to Spring Data Commons 1.7.0.M1 and Spring Data Build 1.3.0.M1. Use milestone repository instead of snapshot repo. Let reference documentation refer to 1.7 M1 reference in Spring Data Commons. Updated changelog, notice and readme.
2013-11-19 13:21:43 +01:00
Oliver Gierke
0d089a3d61 DATAJPA-426 - Improve extensibility of SimpleJpaRepository.
Made a few originally private method protected to allow usage from sub-classes.
2013-11-14 10:21:58 +00:00
Oliver Gierke
240ace24f3 DATAJPA-265 - Further polishing.
Original pull request: #50.
2013-11-12 12:04:20 +01:00
Oliver Gierke
80e1777a5b DATAJPA-265 - Improve implementation of AuditingBeanFactoryPostProcessor.
Polished the implementation of AuditingBeanFactoryPostProcessor to selectively add depends-on clauses to all bean definitions that will result in EntityManagerFactory instances eventually. Added unit tests to verify intended behavior for Java based configuration. Polished newly integrated test cases.

Removed obsolete code from AuditingEntityListener. Added configuration sample snippet. Polished reference documentation.

Original pull request: #50.
2013-11-11 20:43:07 +01:00
Thomas Darimont
44806cb7f1 DATAJPA-265 - Support for auditing configuration via JavaConfig.
Introduces the necessary infrastructure to configure auditing with JPA via JavaConfig using @EnableJpaAuditing.

Original pull request: #50.
2013-11-11 20:20:05 +01:00
Thomas Darimont
23e27f3332 DATAJPA-424 - Fixed alias detection in manually defined queries using SpEL.
ExpressionBasedStringQuery now resolves and evaluates SpEL expressions of the actual query in the constructor and passes the resolved query to the StringQuery constructor. This enables the alias detection mechanism to work properly.

Original pull request: #51
2013-11-07 13:50:46 +01:00
Oliver Gierke
9a279f83cf DATAJPA-419 - Adapt to new non-lazy-instantiation model of repositories.
Mostly mayor cleanups the way test cases bootstrap the repositories as they're now instantiated eagerly.
2013-11-05 16:41:48 +01:00
Oliver Gierke
e3b0148383 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.
2013-10-27 17:41:50 +01:00
Oliver Gierke
d4d352584d 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.
2013-10-27 17:41:50 +01:00
Oliver Gierke
5be0897d08 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.
2013-10-25 19:43:06 +02:00
Oliver Gierke
33216534be 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.
2013-10-22 16:42:11 +02:00
Thomas Darimont
2636f59304 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].
2013-10-22 14:35:03 +02:00
Oliver Gierke
b99508fbf9 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.
2013-10-22 14:23:04 +02:00
Thomas Darimont
2b08a05085 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.
2013-10-22 14:21:27 +02:00
Oliver Gierke
e7505b40a5 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(…)).
2013-10-07 17:00:45 +02:00
Oliver Gierke
b8c81e9a2f DATAJPA-409 - Added unit test for count query creation for nested references. 2013-10-03 19:31:01 +02:00
Thomas Darimont
18f89afa78 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.
2013-10-01 15:40:28 +02:00
Thomas Darimont
32f0f7830d 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.
2013-10-01 13:46:02 +02:00
Thomas Darimont
b6fbda9770 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.
2013-09-30 18:53:37 +02:00
Thomas Darimont
3735464ec2 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.
2013-09-26 12:15:53 +02:00
Oliver Gierke
0a11d30aac 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.
2013-09-25 12:11:50 +02:00
Oliver Gierke
4b7c413f5b 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.
2013-09-25 09:33:55 +02:00
Thomas Darimont
8c1e4c20ea 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.
2013-09-24 14:52:16 +02:00
Thomas Darimont
e9eecab14d 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.
2013-09-23 16:10:23 +02:00
Thomas Darimont
c6c4a3b344 DATAJPA-386 - Prepare for next iteration.
Updated pom.xml to refer to the current version of SD Commons 1.7.0.BUILD-SNAPSHOT.
2013-09-18 13:19:15 +02:00
Spring Buildmaster
2a2255dca9 DATAJPA-386 - Prepare next development iteration. 2013-09-09 15:30:01 -07:00
Spring Buildmaster
0e2663e9a4 DATAJPA-386 - Release version 1.4.0.RELEASE. 2013-09-09 15:29:59 -07:00
Thomas Darimont
d41a466b4d DATAJPA-386 - Prepare 1.4.0 Release. 2013-09-09 15:26:18 -07:00
Thomas Darimont
63082054bf Fixed project name in readme.md 2013-08-27 14:27:02 +02:00
Oliver Gierke
dfff8ef174 DATACMNS-357 - Test case for new state detection for entities with primitive ids.
Ignore test case for EclipseLink as it throws an exception complaining about long being used where Long is expected.

See https://bugs.eclipse.org/bugs/show_bug.cgi?id=415027
2013-08-14 10:16:11 +02:00
Oliver Gierke
e5e4b4dd3b DATAJPA-347 - Upgrade to Spring Data Commons 1.6.0.BUILD-SNAPSHOT. 2013-08-14 09:24:53 +02:00
Oliver Gierke
0b9e711315 DATAJPA-375 - Fixed application of sort to queries with existing order by.
Improved existingin order by detection to detect the existing clause independent of the case. Before we only detected lower case "order by" expressions.
2013-08-13 13:06:48 +02:00
Dale Wijand
e65dec893d DATAJPA-392 - Fixed typo in package-info.java of utility package.
Original pull request: #17.
2013-08-13 12:09:23 +02:00
Oliver Gierke
a1b939f6ab DATAJPA-388 - CDI extension now detects @Alternative EntityManagers.
We now make sure an alternative EntityManager (producer) is overriding a previously found EntityManager. Vice versa, we do not override a previously found one, except it marked as alternative.
2013-08-12 13:08:24 +02:00
Oliver Gierke
fd8b7b6a00 DATAJPA-391 - Added test case to show projections for manually defined queries. 2013-08-09 19:21:35 +02:00