mirror of
https://github.com/querydsl/querydsl.git
synced 2026-06-13 21:01:01 +08:00
#80 added conversion of non path projections to aliased projections
This commit is contained in:
parent
8eb96da120
commit
df948b1da2
@ -1,7 +1,7 @@
|
||||
----------------------------------------------------------------
|
||||
Tue Dec 20 21:23:01 EET 2011:
|
||||
Booting Derby version The Apache Software Foundation - Apache Derby - 10.8.2.2 - (1181258): instance a816c00e-0134-5ced-4557-000002bb1ce0
|
||||
on database directory /home/tiwe/work/querydsl/querydsl-jpa/target/derbydb with class loader sun.misc.Launcher$AppClassLoader@16f0472
|
||||
Sat Jan 14 19:25:17 EET 2012:
|
||||
Booting Derby version The Apache Software Foundation - Apache Derby - 10.8.2.2 - (1181258): instance a816c00e-0134-dd40-7974-000002cca5a0
|
||||
on database directory /home/tiwe/work/querydsl/querydsl-jpa/target/derbydb with class loader sun.misc.Launcher$AppClassLoader@1a16869
|
||||
Loaded from file:/home/tiwe/.m2/repository/org/apache/derby/derby/10.8.2.2/derby-10.8.2.2.jar
|
||||
java.vendor=Sun Microsystems Inc.
|
||||
java.runtime.version=1.6.0_26-b03
|
||||
|
||||
@ -42,6 +42,7 @@ import com.mysema.query.sql.SQLTemplates;
|
||||
import com.mysema.query.sql.Union;
|
||||
import com.mysema.query.sql.UnionImpl;
|
||||
import com.mysema.query.types.Expression;
|
||||
import com.mysema.query.types.ExpressionUtils;
|
||||
import com.mysema.query.types.FactoryExpression;
|
||||
import com.mysema.query.types.Path;
|
||||
import com.mysema.query.types.SubQueryExpression;
|
||||
@ -109,6 +110,12 @@ public abstract class AbstractHibernateSQLQuery<Q extends AbstractHibernateSQLQu
|
||||
}
|
||||
|
||||
public Query createQuery(Expression<?>... args) {
|
||||
for (int i = 0; i < args.length; i++) {
|
||||
// create aliases for non path projections
|
||||
if (!(args[i] instanceof Path) && !(args[i] instanceof FactoryExpression)) {
|
||||
args[i] = ExpressionUtils.as(args[i], "col"+(i+1));
|
||||
}
|
||||
}
|
||||
queryMixin.getMetadata().setValidate(false);
|
||||
queryMixin.addToProjection(args);
|
||||
return createQuery(toQueryString());
|
||||
@ -258,6 +265,7 @@ public abstract class AbstractHibernateSQLQuery<Q extends AbstractHibernateSQLQu
|
||||
return innerUnion(sq);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private <RT> Union<RT> innerUnion(SubQueryExpression<?>... sq) {
|
||||
queryMixin.getMetadata().setValidate(false);
|
||||
if (!queryMixin.getMetadata().getJoins().isEmpty()) {
|
||||
|
||||
@ -43,6 +43,9 @@ import com.mysema.query.sql.Union;
|
||||
import com.mysema.query.sql.UnionImpl;
|
||||
import com.mysema.query.types.EntityPath;
|
||||
import com.mysema.query.types.Expression;
|
||||
import com.mysema.query.types.ExpressionUtils;
|
||||
import com.mysema.query.types.FactoryExpression;
|
||||
import com.mysema.query.types.Path;
|
||||
import com.mysema.query.types.SubQueryExpression;
|
||||
import com.mysema.query.types.query.ListSubQuery;
|
||||
|
||||
@ -100,6 +103,12 @@ public abstract class AbstractJPASQLQuery<Q extends AbstractJPASQLQuery<Q> & com
|
||||
}
|
||||
|
||||
public Query createQuery(Expression<?>... args) {
|
||||
for (int i = 0; i < args.length; i++) {
|
||||
// create aliases for non path projections
|
||||
if (!(args[i] instanceof Path) && !(args[i] instanceof FactoryExpression)) {
|
||||
args[i] = ExpressionUtils.as(args[i], "col"+(i+1));
|
||||
}
|
||||
}
|
||||
queryMixin.getMetadata().setValidate(false);
|
||||
queryMixin.addToProjection(args);
|
||||
return createQuery(toQueryString());
|
||||
|
||||
@ -102,6 +102,14 @@ public class JPADerbySQLTest {
|
||||
assertEquals(6, query().from(cat).where(cat.dtype.eq("C")).list(cat.id).size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void List_Non_Path() {
|
||||
assertEquals(6, query().from(cat).where(cat.dtype.eq("C")).list(
|
||||
cat.birthdate.year(),
|
||||
cat.birthdate.month(),
|
||||
cat.birthdate.dayOfMonth()).size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void List_With_Limit(){
|
||||
assertEquals(3, query().from(cat).limit(3).list(cat.id).size());
|
||||
|
||||
Loading…
Reference in New Issue
Block a user