Merge pull request #1243 from querydsl/i1241

Optimize exists queries
This commit is contained in:
Ruben Dijkstra 2015-03-09 22:23:10 +01:00
commit 55405ea087
5 changed files with 2 additions and 22 deletions

View File

@ -95,10 +95,4 @@ public class EclipseLinkTemplates extends JPQLTemplates {
return false;
}
@Override
public boolean isSelect1Supported() {
return true;
}
}

View File

@ -98,12 +98,6 @@ public class HQLTemplates extends JPQLTemplates {
return "1";
}
@Override
public boolean isSelect1Supported() {
// TODO return true, when JPQLTemplates becomes standard
return false;
}
@Override
public boolean isEnumInPathSupported() {
// related : http://opensource.atlassian.com/projects/hibernate/browse/HHH-5159

View File

@ -64,12 +64,7 @@ public abstract class JPAQueryBase<Q extends JPAQueryBase<Q>> extends Projectabl
@Override
public boolean exists() {
if (templates.isSelect1Supported()) {
return singleResult(NumberTemplate.ONE) != null;
} else {
EntityPath<?> entityPath = (EntityPath<?>) queryMixin.getMetadata().getJoins().get(0).getTarget();
return !limit(1).list(entityPath).isEmpty();
}
return singleResult(NumberTemplate.ONE) != null;
}
public Q fetch() {

View File

@ -158,10 +158,6 @@ public class JPQLTemplates extends Templates {
return true;
}
public boolean isSelect1Supported() {
return false;
}
@Nullable
public String getExistsProjection() {
return null;

View File

@ -621,6 +621,7 @@ public abstract class AbstractJPATest {
@Test
public void Exists() {
assertTrue(query().from(cat).where(cat.kittens.any().name.eq("Ruth123")).exists());
assertFalse(query().from(cat).where(cat.kittens.any().name.eq("Ruth321")).exists());
}
@Test