An excerpt from the website of a 3rd party vendor which tries to support JPA 2.0:
"The primary difference between JPA 1.0 and JPA 2.0 implementations is how data is fetched: the JPA 1.0 implementation creates a JPQL query string for fetching while the JPA 2.0 implementation uses Criteria API.
Tested JPA 2.0 providers
* Hibernate 3.6.1 - PASS. Minimum version 3.6.1 - older versions have a bug in the Criteria API implementation which prevents correct negation of conjunction and disjunction predicates.
* EclipseLink 2.2.0 - PASS.
* OpenJPA 2.1.0 - FAIL. Does not support "lower(FIELD_NAME) LIKE lower('value')". According to the exception message only "lower(FIELD_NAME) LIKE 'value'" is supported:
org.apache.openjpa.persistence.ArgumentException: The filter listener "matches" requires a constant argument.
* DataNucleus 2.2.2 - FAIL. Was not able to create even a simple query with Criteria API.
* ObjectDB 2.1.0 - FAIL. Does not support Criteria API:
java.lang.UnsupportedOperationException: Unsupported feature - JPA Criteria Builder"
The latest ObjectDB JPA 2.0 implementation - version 2.3.7 - is not (yet) listed in the list of Tested JPA 2.0 providers; but, of course, I would like to know:
- When will the ObjectDB JPA 2.0 implementation fully support the JPA 2.0 Criteria API ? In the sense that it passes the test of the above 3rd party vendor ?