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 4655032d3..4c093c26c 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 @@ -49,7 +49,9 @@ public abstract class AbstractJPAQuery> extends JP @Nullable private LockModeType lockMode; - + + private Class hibernateQueryClass; + public AbstractJPAQuery(EntityManager em) { this(new DefaultSessionHolder(em), HQLTemplates.DEFAULT, new DefaultQueryMetadata()); } @@ -57,6 +59,11 @@ public abstract class AbstractJPAQuery> extends JP public AbstractJPAQuery(JPASessionHolder sessionHolder, JPQLTemplates patterns, QueryMetadata metadata) { super(metadata, patterns); this.sessionHolder = sessionHolder; + try { + this.hibernateQueryClass = Class.forName("org.hibernate.ejb.HibernateQuery"); + } catch (ClassNotFoundException e) { + // do nothing + } } public long count() { @@ -132,7 +139,8 @@ public abstract class AbstractJPAQuery> extends JP if (projection.size() == 1){ Expression expr = projection.get(0); if (expr instanceof FactoryExpression){ - if (query.getClass().getName().startsWith("org.hibernate")){ +// if (query.getClass().getName().startsWith("org.hibernate")){ + if (hibernateQueryClass != null && hibernateQueryClass.isInstance(query)) { try { Class cl = Class.forName("com.mysema.query.jpa.impl.JPAQueryTransformerTask"); cl.getConstructor(Query.class, FactoryExpression.class).newInstance(query, expr);