From f60f91e3b2c4241f2e5243085b0264d72004cd53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Fri, 1 Jul 2011 12:58:26 +0000 Subject: [PATCH] #799254 : improved query instance type check --- .../com/mysema/query/jpa/impl/AbstractJPAQuery.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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);