diff --git a/querydsl-jpa/pom.xml b/querydsl-jpa/pom.xml
index 8f0f69c38..2afb2641a 100644
--- a/querydsl-jpa/pom.xml
+++ b/querydsl-jpa/pom.xml
@@ -54,7 +54,14 @@
slf4j-api
-
+
+
+
+ org.eclipse.persistence
+ eclipselink
+ 2.3.0-M6
+ provided
+
org.hibernate.javax.persistence
@@ -93,12 +100,6 @@
-
- org.eclipse.persistence
- eclipselink
- 2.3.0-M6
- test
-
postgresql
diff --git a/querydsl-jpa/src/main/java/com/mysema/query/jpa/impl/AbstractJPAQuery.java b/querydsl-jpa/src/main/java/com/mysema/query/jpa/impl/AbstractJPAQuery.java
index ad3f4c9bb..cd62e1ef1 100644
--- a/querydsl-jpa/src/main/java/com/mysema/query/jpa/impl/AbstractJPAQuery.java
+++ b/querydsl-jpa/src/main/java/com/mysema/query/jpa/impl/AbstractJPAQuery.java
@@ -13,6 +13,7 @@
*/
package com.mysema.query.jpa.impl;
+import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.HashMap;
@@ -72,8 +73,6 @@ public abstract class AbstractJPAQuery> extends JP
@Nullable
protected FlushModeType flushMode;
-
-
protected boolean factoryExpressionUsed = false;
@@ -159,25 +158,31 @@ public abstract class AbstractJPAQuery> extends JP
// set transformer, if necessary and possible
List extends Expression>> projection = getMetadata().getProjection();
if (projection.size() == 1 && !forCount) {
- Expression> expr = projection.get(0);
+ Expression> expr = projection.get(0);
if (expr instanceof FactoryExpression>) {
+ String transformation = null;
if (hibernateQueryClass != null && hibernateQueryClass.isInstance(query)) {
+ transformation = "com.mysema.query.jpa.impl.HibernateQueryTransformation";
+ }
+// else if (query.getClass().getName().startsWith("org.eclipse.persistence")) {
+// transformation = "com.mysema.query.jpa.impl.EclipseLinkQueryTransformation";
+// }
+ if (transformation != null) {
try {
- Class> cl = Class.forName("com.mysema.query.jpa.impl.HibernateQueryTransformation");
- cl.getConstructor(Query.class, FactoryExpression.class).newInstance(query, expr);
- } catch (ClassNotFoundException e) {
- throw new QueryException(e.getMessage(), e);
- } catch (SecurityException e) {
- throw new QueryException(e.getMessage(), e);
- } catch (InstantiationException e) {
- throw new QueryException(e.getMessage(), e);
- } catch (IllegalAccessException e) {
- throw new QueryException(e.getMessage(), e);
- } catch (InvocationTargetException e) {
- throw new QueryException(e.getMessage(), e);
+ Constructor> c = Class.forName(transformation).getConstructor(Query.class, FactoryExpression.class);
+ c.newInstance(query, expr);
} catch (NoSuchMethodException e) {
- throw new QueryException(e.getMessage(), e);
+ throw new QueryException(e);
+ } catch (ClassNotFoundException e) {
+ throw new QueryException(e);
+ } catch (InstantiationException e) {
+ throw new QueryException(e);
+ } catch (IllegalAccessException e) {
+ throw new QueryException(e);
+ } catch (InvocationTargetException e) {
+ throw new QueryException(e);
}
+
} else {
factoryExpressionUsed = true;
}
diff --git a/querydsl-jpa/src/test/java/com/mysema/query/_derby/DerbyJPAEclipseLinkTest.java b/querydsl-jpa/src/test/java/com/mysema/query/_derby/DerbyJPAEclipseLinkTest.java
index b11981fe1..30e807467 100644
--- a/querydsl-jpa/src/test/java/com/mysema/query/_derby/DerbyJPAEclipseLinkTest.java
+++ b/querydsl-jpa/src/test/java/com/mysema/query/_derby/DerbyJPAEclipseLinkTest.java
@@ -49,17 +49,7 @@ public class DerbyJPAEclipseLinkTest extends AbstractJPATest{
public void Hint(){
// FIXME
}
-
- @Override
- public void TupleProjection(){
- // FIXME : custom projections don't work
- }
-
- @Override
- public void ArrayProjection(){
- // FIXME : custom projections don't work
- }
-
+
@Override
public void Connection_Access(){
// cannot unwrap to Connection instance