From b595fc191a17775befcf70384451b951eb772627 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Tue, 11 May 2010 20:33:39 +0000 Subject: [PATCH] added tests --- .../query/collections/AbstractColQuery.java | 3 +- .../mysema/query/DefaultQueryMetadata.java | 17 +--- .../java/com/mysema/query/QueryMetadata.java | 7 -- .../PropertyAccessInvocationHandler.java | 2 +- .../mysema/query/support/DetachableMixin.java | 24 +++--- .../com/mysema/query/support/QueryMixin.java | 6 +- .../mysema/query/types/expr/EComparable.java | 1 - .../query/types/query/ComparableSubQuery.java | 2 +- .../query/types/query/DateSubQuery.java | 2 +- .../query/types/query/DateTimeSubQuery.java | 2 +- .../query/types/query/ListSubQuery.java | 2 +- .../query/types/query/NumberSubQuery.java | 2 +- .../query/types/query/ObjectSubQuery.java | 2 +- .../query/types/query/TimeSubQuery.java | 2 +- .../com/mysema/query/BooleanBuilderTest.java | 21 +++++ .../query/DefaultQueryMetadataTest.java | 77 +++++++++++++++++++ .../com/mysema/query/alias/AliasTest.java | 9 +++ .../mysema/query/codegen/SerializerTest.java | 38 +++++++-- .../types/path/PathBuilderFactoryTest.java | 1 + .../query/types/query/SubQueryTest.java | 40 ++++++++++ .../hql/hibernate/HibernateDeleteClause.java | 3 +- .../hql/hibernate/HibernateUpdateClause.java | 3 +- .../mysema/query/hql/jpa/JPADeleteClause.java | 3 +- .../mysema/query/hql/jpa/JPAUpdateClause.java | 3 +- .../com/mysema/query/jdoql/JDOQLSubQuery.java | 3 +- .../query/jdoql/dml/JDOQLDeleteClause.java | 3 +- 26 files changed, 219 insertions(+), 59 deletions(-) create mode 100644 querydsl-core/src/test/java/com/mysema/query/DefaultQueryMetadataTest.java create mode 100644 querydsl-core/src/test/java/com/mysema/query/types/query/SubQueryTest.java diff --git a/querydsl-collections/src/main/java/com/mysema/query/collections/AbstractColQuery.java b/querydsl-collections/src/main/java/com/mysema/query/collections/AbstractColQuery.java index 8a6835311..c4bcc11ac 100644 --- a/querydsl-collections/src/main/java/com/mysema/query/collections/AbstractColQuery.java +++ b/querydsl-collections/src/main/java/com/mysema/query/collections/AbstractColQuery.java @@ -15,6 +15,7 @@ import org.apache.commons.collections15.IteratorUtils; import com.mysema.commons.lang.CloseableIterator; import com.mysema.commons.lang.IteratorAdapter; +import com.mysema.query.JoinType; import com.mysema.query.QueryException; import com.mysema.query.QueryMetadata; import com.mysema.query.QueryModifiers; @@ -94,7 +95,7 @@ public abstract class AbstractColQuery> extends P @SuppressWarnings("unchecked") public Q from(Path entity, Iterable col) { iterables.put(entity.asExpr(), col); - queryMixin.getMetadata().addFrom(entity.asExpr()); + queryMixin.getMetadata().addJoin(JoinType.DEFAULT, entity.asExpr()); return (Q)this; } diff --git a/querydsl-core/src/main/java/com/mysema/query/DefaultQueryMetadata.java b/querydsl-core/src/main/java/com/mysema/query/DefaultQueryMetadata.java index cc38d452c..a52bba57c 100644 --- a/querydsl-core/src/main/java/com/mysema/query/DefaultQueryMetadata.java +++ b/querydsl-core/src/main/java/com/mysema/query/DefaultQueryMetadata.java @@ -50,22 +50,7 @@ public class DefaultQueryMetadata implements QueryMetadata, Cloneable { private boolean unique; private BooleanBuilder where = new BooleanBuilder(); - - @Override - @SuppressWarnings("GC_UNCHECKED_TYPE_IN_GENERIC_CALL") - public void addFrom(Expr... args) { - for (Expr arg : args) { - if (arg instanceof Path){ - ensureRoot((Path) arg); - } - // NOTE : contains takes Object argument - if (!exprInJoins.contains(arg)) { - joins.add(new JoinExpression(JoinType.DEFAULT, arg)); - exprInJoins.add(arg); - } - } - } - + @Override public void addGroupBy(Expr... o) { groupBy.addAll(Arrays.> asList(o)); diff --git a/querydsl-core/src/main/java/com/mysema/query/QueryMetadata.java b/querydsl-core/src/main/java/com/mysema/query/QueryMetadata.java index e1312d3d7..fe7ceddf1 100644 --- a/querydsl-core/src/main/java/com/mysema/query/QueryMetadata.java +++ b/querydsl-core/src/main/java/com/mysema/query/QueryMetadata.java @@ -21,13 +21,6 @@ import com.mysema.query.types.expr.EBoolean; * @author tiwe */ public interface QueryMetadata extends Serializable { - - /** - * Add the given query sources - * - * @param o - */ - void addFrom(Expr... o); /** * Add the given group by expressions diff --git a/querydsl-core/src/main/java/com/mysema/query/alias/PropertyAccessInvocationHandler.java b/querydsl-core/src/main/java/com/mysema/query/alias/PropertyAccessInvocationHandler.java index c43e54f83..edc6b08e5 100644 --- a/querydsl-core/src/main/java/com/mysema/query/alias/PropertyAccessInvocationHandler.java +++ b/querydsl-core/src/main/java/com/mysema/query/alias/PropertyAccessInvocationHandler.java @@ -139,7 +139,7 @@ class PropertyAccessInvocationHandler implements MethodInterceptor { return rv; } - @SuppressWarnings({ "unchecked", "serial" }) + @SuppressWarnings({ "unchecked"}) @Nullable private T newInstance(Class type, Type genericType, Object parent, Object propKey, PathMetadata pm) { Expr path; diff --git a/querydsl-core/src/main/java/com/mysema/query/support/DetachableMixin.java b/querydsl-core/src/main/java/com/mysema/query/support/DetachableMixin.java index 989ebf4ae..8dbf26ae4 100644 --- a/querydsl-core/src/main/java/com/mysema/query/support/DetachableMixin.java +++ b/querydsl-core/src/main/java/com/mysema/query/support/DetachableMixin.java @@ -46,7 +46,7 @@ public class DetachableMixin implements Detachable{ @Override public ObjectSubQuery count() { queryMixin.addToProjection(COUNT_ALL_AGG_EXPR); - return new ObjectSubQuery(queryMixin.getMetadata(), Long.class); + return new ObjectSubQuery(Long.class, queryMixin.getMetadata()); } @Override @@ -61,13 +61,13 @@ public class DetachableMixin implements Detachable{ public ListSubQuery list(Expr first, Expr second, Expr... rest) { queryMixin.addToProjection(first, second); queryMixin.addToProjection(rest); - return new ListSubQuery(queryMixin.getMetadata(), Object[].class); + return new ListSubQuery(Object[].class, queryMixin.getMetadata()); } @Override public ListSubQuery list(Expr[] args) { queryMixin.addToProjection(args); - return new ListSubQuery(queryMixin.getMetadata(), Object[].class); + return new ListSubQuery(Object[].class, queryMixin.getMetadata()); } @@ -75,7 +75,7 @@ public class DetachableMixin implements Detachable{ @Override public ListSubQuery list(Expr projection) { queryMixin.addToProjection(projection); - return new ListSubQuery(queryMixin.getMetadata(), (Class)projection.getType()); + return new ListSubQuery((Class)projection.getType(), queryMixin.getMetadata()); } @Override @@ -98,28 +98,28 @@ public class DetachableMixin implements Detachable{ @Override public > ComparableSubQuery unique(EComparable projection) { setUniqueProjection(projection); - return new ComparableSubQuery(queryMixin.getMetadata(), (Class)projection.getType()); + return new ComparableSubQuery((Class)projection.getType(), queryMixin.getMetadata()); } @SuppressWarnings("unchecked") @Override public > DateSubQuery unique(EDate projection) { setUniqueProjection(projection); - return new DateSubQuery(queryMixin.getMetadata(), (Class)projection.getType()); + return new DateSubQuery((Class)projection.getType(), queryMixin.getMetadata()); } @SuppressWarnings("unchecked") @Override public > DateTimeSubQuery unique(EDateTime projection) { setUniqueProjection(projection); - return new DateTimeSubQuery(queryMixin.getMetadata(), (Class)projection.getType()); + return new DateTimeSubQuery((Class)projection.getType(), queryMixin.getMetadata()); } @SuppressWarnings("unchecked") @Override public > NumberSubQuery unique(ENumber projection) { setUniqueProjection(projection); - return new NumberSubQuery(queryMixin.getMetadata(), (Class)projection.getType()); + return new NumberSubQuery((Class)projection.getType(), queryMixin.getMetadata()); } @Override @@ -132,7 +132,7 @@ public class DetachableMixin implements Detachable{ @Override public > TimeSubQuery unique(ETime projection) { setUniqueProjection(projection); - return new TimeSubQuery(queryMixin.getMetadata(), (Class)projection.getType()); + return new TimeSubQuery((Class)projection.getType(), queryMixin.getMetadata()); } @Override @@ -140,20 +140,20 @@ public class DetachableMixin implements Detachable{ queryMixin.addToProjection(first, second); queryMixin.addToProjection(rest); queryMixin.setUnique(true); - return new ObjectSubQuery(queryMixin.getMetadata(), Object[].class); + return new ObjectSubQuery(Object[].class, queryMixin.getMetadata()); } @Override public ObjectSubQuery unique(Expr[] args) { queryMixin.addToProjection(args); queryMixin.setUnique(true); - return new ObjectSubQuery(queryMixin.getMetadata(), Object[].class); + return new ObjectSubQuery(Object[].class, queryMixin.getMetadata()); } @SuppressWarnings("unchecked") @Override public ObjectSubQuery unique(Expr projection) { setUniqueProjection(projection); - return new ObjectSubQuery(queryMixin.getMetadata(), (Class)projection.getType()); + return new ObjectSubQuery((Class)projection.getType(), queryMixin.getMetadata()); } } diff --git a/querydsl-core/src/main/java/com/mysema/query/support/QueryMixin.java b/querydsl-core/src/main/java/com/mysema/query/support/QueryMixin.java index f17d86247..8d3164f5c 100644 --- a/querydsl-core/src/main/java/com/mysema/query/support/QueryMixin.java +++ b/querydsl-core/src/main/java/com/mysema/query/support/QueryMixin.java @@ -54,8 +54,10 @@ public class QueryMixin{ return metadata; } - public T from(Expr... args) { - metadata.addFrom(args); + public T from(Expr... args) { + for (Expr arg : args){ + metadata.addJoin(JoinType.DEFAULT, arg); + } return self; } diff --git a/querydsl-core/src/main/java/com/mysema/query/types/expr/EComparable.java b/querydsl-core/src/main/java/com/mysema/query/types/expr/EComparable.java index 2fa916fc3..0141b9619 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/expr/EComparable.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/expr/EComparable.java @@ -26,7 +26,6 @@ public abstract class EComparable extends EComparableBase< super(type); } - @SuppressWarnings("unchecked") @Override public EComparable as(Path alias) { return OComparable.create(getType(),(Operator)Ops.ALIAS, this, alias.asExpr()); diff --git a/querydsl-core/src/main/java/com/mysema/query/types/query/ComparableSubQuery.java b/querydsl-core/src/main/java/com/mysema/query/types/query/ComparableSubQuery.java index 0493b77f0..e053a6472 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/query/ComparableSubQuery.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/query/ComparableSubQuery.java @@ -24,7 +24,7 @@ public final class ComparableSubQuery> extends EComparab private final SubQueryMixin subQueryMixin; - public ComparableSubQuery(QueryMetadata md, Class type) { + public ComparableSubQuery(Class type, QueryMetadata md) { super(type); subQueryMixin = new SubQueryMixin(this,md); } diff --git a/querydsl-core/src/main/java/com/mysema/query/types/query/DateSubQuery.java b/querydsl-core/src/main/java/com/mysema/query/types/query/DateSubQuery.java index 851894fd1..bd16b5014 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/query/DateSubQuery.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/query/DateSubQuery.java @@ -24,7 +24,7 @@ public final class DateSubQuery> extends EDate implem private final SubQueryMixin subQueryMixin; - public DateSubQuery(QueryMetadata md, Class type) { + public DateSubQuery(Class type, QueryMetadata md) { super(type); subQueryMixin = new SubQueryMixin(this,md); } diff --git a/querydsl-core/src/main/java/com/mysema/query/types/query/DateTimeSubQuery.java b/querydsl-core/src/main/java/com/mysema/query/types/query/DateTimeSubQuery.java index 7f5fcc701..ee09aabab 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/query/DateTimeSubQuery.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/query/DateTimeSubQuery.java @@ -24,7 +24,7 @@ public final class DateTimeSubQuery> extends EDateTime subQueryMixin; - public DateTimeSubQuery(QueryMetadata md, Class type) { + public DateTimeSubQuery(Class type, QueryMetadata md) { super(type); subQueryMixin = new SubQueryMixin(this,md); } diff --git a/querydsl-core/src/main/java/com/mysema/query/types/query/ListSubQuery.java b/querydsl-core/src/main/java/com/mysema/query/types/query/ListSubQuery.java index ad3340a33..92199edfd 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/query/ListSubQuery.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/query/ListSubQuery.java @@ -34,7 +34,7 @@ public final class ListSubQuery extends ECollectionBase,A> implements private final SubQueryMixin> subQueryMixin; @SuppressWarnings("unchecked") - public ListSubQuery(QueryMetadata md, Class elementType) { + public ListSubQuery(Class elementType, QueryMetadata md) { super((Class)List.class); this.elementType = elementType; this.subQueryMixin = new SubQueryMixin>(this,md); diff --git a/querydsl-core/src/main/java/com/mysema/query/types/query/NumberSubQuery.java b/querydsl-core/src/main/java/com/mysema/query/types/query/NumberSubQuery.java index 9b7fd885e..dc72fe7bb 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/query/NumberSubQuery.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/query/NumberSubQuery.java @@ -25,7 +25,7 @@ public final class NumberSubQuery> extends ENum private final SubQueryMixin subQueryMixin; - public NumberSubQuery(QueryMetadata md, Class type) { + public NumberSubQuery(Class type, QueryMetadata md) { super(type); subQueryMixin = new SubQueryMixin(this,md); } diff --git a/querydsl-core/src/main/java/com/mysema/query/types/query/ObjectSubQuery.java b/querydsl-core/src/main/java/com/mysema/query/types/query/ObjectSubQuery.java index 88db6b487..af2f78e01 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/query/ObjectSubQuery.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/query/ObjectSubQuery.java @@ -24,7 +24,7 @@ public final class ObjectSubQuery extends ESimple implements SubQuery{ private final SubQueryMixin subQueryMixin; - public ObjectSubQuery(QueryMetadata md, Class type) { + public ObjectSubQuery(Class type, QueryMetadata md) { super(type); subQueryMixin = new SubQueryMixin(this,md); } diff --git a/querydsl-core/src/main/java/com/mysema/query/types/query/TimeSubQuery.java b/querydsl-core/src/main/java/com/mysema/query/types/query/TimeSubQuery.java index 9683e3c4e..81e103f49 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/query/TimeSubQuery.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/query/TimeSubQuery.java @@ -28,7 +28,7 @@ public final class TimeSubQuery> extends ETime implem private final SubQueryMixin subQueryMixin; - public TimeSubQuery(QueryMetadata md, Class type) { + public TimeSubQuery(Class type, QueryMetadata md) { super(type); subQueryMixin = new SubQueryMixin(this,md); } diff --git a/querydsl-core/src/test/java/com/mysema/query/BooleanBuilderTest.java b/querydsl-core/src/test/java/com/mysema/query/BooleanBuilderTest.java index 184106006..f52ec26d5 100644 --- a/querydsl-core/src/test/java/com/mysema/query/BooleanBuilderTest.java +++ b/querydsl-core/src/test/java/com/mysema/query/BooleanBuilderTest.java @@ -54,4 +54,25 @@ public class BooleanBuilderTest { assertEquals(first, first.and(null)); assertEquals(first, first.or(null)); } + + @Test + public void andNot(){ + BooleanBuilder builder = new BooleanBuilder(); + builder.and(first).andNot(second); + assertEquals(first.and(second.not()), builder.getValue()); + } + + @Test + public void orNot(){ + BooleanBuilder builder = new BooleanBuilder(); + builder.and(first).orNot(second); + assertEquals(first.or(second.not()), builder.getValue()); + } + + @Test + public void not(){ + BooleanBuilder builder = new BooleanBuilder(); + builder.and(first).not(); + assertEquals(first.not(), builder.getValue()); + } } diff --git a/querydsl-core/src/test/java/com/mysema/query/DefaultQueryMetadataTest.java b/querydsl-core/src/test/java/com/mysema/query/DefaultQueryMetadataTest.java new file mode 100644 index 000000000..aea5e5d72 --- /dev/null +++ b/querydsl-core/src/test/java/com/mysema/query/DefaultQueryMetadataTest.java @@ -0,0 +1,77 @@ +package com.mysema.query; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.util.Arrays; + +import org.junit.Test; + +import com.mysema.query.types.path.PString; + +public class DefaultQueryMetadataTest { + + private QueryMetadata md = new DefaultQueryMetadata(); + + private PString str = new PString("str"); + + @Test + public void testGetGroupBy() { + md.addGroupBy(str); + assertEquals(Arrays.asList(str), md.getGroupBy()); + } + + @Test + public void testGetHaving() { + md.addHaving(str.isNotNull()); + assertEquals(str.isNotNull(), md.getHaving()); + } + + @Test + public void testGetJoins() { + md.addJoin(JoinType.DEFAULT, str); + assertEquals(Arrays.asList(new JoinExpression(JoinType.DEFAULT, str)),md.getJoins()); + } + + @Test + public void testGetModifiers() { + QueryModifiers modifiers = new QueryModifiers(1l,2l); + md.setModifiers(modifiers); + assertEquals(modifiers, md.getModifiers()); + } + + @Test + public void testGetOrderBy() { + md.addOrderBy(str.asc()); + md.addOrderBy(str.desc()); + assertEquals(Arrays.asList(str.asc(),str.desc()), md.getOrderBy()); + } + + @Test + public void testGetProjection() { + md.addProjection(str, str.append("abc")); + assertEquals(Arrays.asList(str, str.append("abc")), md.getProjection()); + } + + @Test + public void testGetWhere() { + md.addWhere(str.eq("b"), str.isNotEmpty()); + assertEquals(str.eq("b").and(str.isNotEmpty()), md.getWhere()); + } + + @Test + public void testIsDistinct() { + assertFalse(md.isDistinct()); + md.setDistinct(true); + assertTrue(md.isDistinct()); + } + + @Test + public void testIsUnique() { + assertFalse(md.isUnique()); + md.setUnique(true); + assertTrue(md.isUnique()); + } + +} diff --git a/querydsl-core/src/test/java/com/mysema/query/alias/AliasTest.java b/querydsl-core/src/test/java/com/mysema/query/alias/AliasTest.java index 0ebb05ec3..95ea349c5 100644 --- a/querydsl-core/src/test/java/com/mysema/query/alias/AliasTest.java +++ b/querydsl-core/src/test/java/com/mysema/query/alias/AliasTest.java @@ -8,6 +8,9 @@ package com.mysema.query.alias; import static com.mysema.query.alias.Alias.$; import static org.junit.Assert.assertEquals; +import java.util.List; +import java.util.Map; + import org.junit.Test; public class AliasTest { @@ -19,6 +22,10 @@ public class AliasTest { String getLastName(); int getAge(); + + List getList(); + + Map getMap(); } @Test @@ -26,6 +33,8 @@ public class AliasTest { Person person = Alias.alias(Person.class); assertEquals("lower(person.firstName)", $(person.getFirstName()).lower().toString()); assertEquals("person.age", $(person.getAge()).toString()); + assertEquals("person.map.get(a)", $(person.getMap().get("a")).toString()); + assertEquals("person.list.get(0)", $(person.getList().get(0)).toString()); } } diff --git a/querydsl-core/src/test/java/com/mysema/query/codegen/SerializerTest.java b/querydsl-core/src/test/java/com/mysema/query/codegen/SerializerTest.java index eb838194d..69492d904 100644 --- a/querydsl-core/src/test/java/com/mysema/query/codegen/SerializerTest.java +++ b/querydsl-core/src/test/java/com/mysema/query/codegen/SerializerTest.java @@ -5,10 +5,12 @@ */ package com.mysema.query.codegen; +import java.io.IOException; import java.io.StringWriter; import java.io.Writer; import java.util.Collections; +import org.junit.Before; import org.junit.Test; import com.mysema.codegen.JavaWriter; @@ -25,22 +27,46 @@ public class SerializerTest { private Writer writer = new StringWriter(); - public SerializerTest() { + private TypeMappings typeMappings = new TypeMappings(); + + @Before + public void setUp(){ TypeFactory typeFactory = new TypeFactory(); + + // type Type typeModel = new SimpleType(TypeCategory.ENTITY, "com.mysema.query.DomainClass", "com.mysema.query", "DomainClass", false); type = new EntityType("Q", typeModel); + + // property + Property property = new Property(type, "field", typeFactory.create(String.class), new String[0]); + type.addProperty(property); - Property field = new Property(type, "field", typeFactory.create(String.class), new String[0]); - type.addProperty(field); + // constructor Parameter param = new Parameter("name", new ClassType(TypeCategory.STRING, String.class)); type.addConstructor(new Constructor(Collections.singleton(param))); + + // method + Method method = new Method(typeFactory.create(String.class), "method", "abc", typeFactory.create(String.class)); + type.addMethod(method); } @Test - public void testDomainTypesAsOuterClasses() throws Exception { - TypeMappings typeMappings = new TypeMappings(); + public void EntitySerializer() throws Exception { new EntitySerializer(typeMappings).serialize(type, SimpleSerializerConfig.DEFAULT, new JavaWriter(writer)); -// System.out.println(writer); + } + + @Test + public void EmbeddableSerializer() throws Exception { + new EmbeddableSerializer(typeMappings).serialize(type, SimpleSerializerConfig.DEFAULT, new JavaWriter(writer)); + } + + @Test + public void SupertypeSerializer() throws IOException{ + new SupertypeSerializer(typeMappings).serialize(type, SimpleSerializerConfig.DEFAULT, new JavaWriter(writer)); } + @Test + public void DTOSerializer() throws IOException{ + new DTOSerializer(typeMappings).serialize(type, SimpleSerializerConfig.DEFAULT, new JavaWriter(writer)); + } } diff --git a/querydsl-core/src/test/java/com/mysema/query/types/path/PathBuilderFactoryTest.java b/querydsl-core/src/test/java/com/mysema/query/types/path/PathBuilderFactoryTest.java index 74273cc58..ea0a76439 100644 --- a/querydsl-core/src/test/java/com/mysema/query/types/path/PathBuilderFactoryTest.java +++ b/querydsl-core/src/test/java/com/mysema/query/types/path/PathBuilderFactoryTest.java @@ -1,3 +1,4 @@ + /* * Copyright (c) 2010 Mysema Ltd. * All rights reserved. diff --git a/querydsl-core/src/test/java/com/mysema/query/types/query/SubQueryTest.java b/querydsl-core/src/test/java/com/mysema/query/types/query/SubQueryTest.java new file mode 100644 index 000000000..d45d76406 --- /dev/null +++ b/querydsl-core/src/test/java/com/mysema/query/types/query/SubQueryTest.java @@ -0,0 +1,40 @@ +package com.mysema.query.types.query; + +import static org.junit.Assert.*; + +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +import org.junit.Test; + +import com.mysema.query.DefaultQueryMetadata; +import com.mysema.query.QueryMetadata; +import com.mysema.query.types.SubQuery; + +public class SubQueryTest { + + @SuppressWarnings("unchecked") + @Test + public void test(){ + QueryMetadata metadata = new DefaultQueryMetadata(); + List subQueries = Arrays.asList( + new BooleanSubQuery(metadata), + new ComparableSubQuery(Date.class,metadata), + new DateSubQuery(Date.class,metadata), + new DateTimeSubQuery(Date.class,metadata), + new ListSubQuery(Date.class,metadata), + new NumberSubQuery(Integer.class,metadata), + new ObjectSubQuery(String.class,metadata), + new StringSubQuery(metadata), + new TimeSubQuery(Date.class,metadata) + ); + for (SubQuery sq : subQueries){ + assertNotNull(sq.asExpr()); + assertNotNull(sq.exists()); + assertNotNull(sq.getMetadata()); + assertNotNull(sq.notExists()); + } + } + +} diff --git a/querydsl-hql/src/main/java/com/mysema/query/hql/hibernate/HibernateDeleteClause.java b/querydsl-hql/src/main/java/com/mysema/query/hql/hibernate/HibernateDeleteClause.java index d9b066fac..38ea82494 100644 --- a/querydsl-hql/src/main/java/com/mysema/query/hql/hibernate/HibernateDeleteClause.java +++ b/querydsl-hql/src/main/java/com/mysema/query/hql/hibernate/HibernateDeleteClause.java @@ -12,6 +12,7 @@ import org.hibernate.Session; import org.hibernate.StatelessSession; import com.mysema.query.DefaultQueryMetadata; +import com.mysema.query.JoinType; import com.mysema.query.QueryMetadata; import com.mysema.query.dml.DeleteClause; import com.mysema.query.hql.HQLSerializer; @@ -44,7 +45,7 @@ public class HibernateDeleteClause implements DeleteClause entity, HQLTemplates templates){ this.session = session; this.templates = templates; - md.addFrom(entity); + md.addJoin(JoinType.DEFAULT, entity); } @Override diff --git a/querydsl-hql/src/main/java/com/mysema/query/hql/hibernate/HibernateUpdateClause.java b/querydsl-hql/src/main/java/com/mysema/query/hql/hibernate/HibernateUpdateClause.java index a7f4f233a..4d17866b4 100644 --- a/querydsl-hql/src/main/java/com/mysema/query/hql/hibernate/HibernateUpdateClause.java +++ b/querydsl-hql/src/main/java/com/mysema/query/hql/hibernate/HibernateUpdateClause.java @@ -12,6 +12,7 @@ import org.hibernate.Session; import org.hibernate.StatelessSession; import com.mysema.query.DefaultQueryMetadata; +import com.mysema.query.JoinType; import com.mysema.query.QueryMetadata; import com.mysema.query.dml.UpdateClause; import com.mysema.query.hql.HQLSerializer; @@ -45,7 +46,7 @@ public class HibernateUpdateClause implements UpdateClause entity, HQLTemplates templates){ this.session = session; this.templates = templates; - metadata.addFrom(entity); + metadata.addJoin(JoinType.DEFAULT, entity); } @Override diff --git a/querydsl-hql/src/main/java/com/mysema/query/hql/jpa/JPADeleteClause.java b/querydsl-hql/src/main/java/com/mysema/query/hql/jpa/JPADeleteClause.java index 997bf4c91..cf0309b3b 100644 --- a/querydsl-hql/src/main/java/com/mysema/query/hql/jpa/JPADeleteClause.java +++ b/querydsl-hql/src/main/java/com/mysema/query/hql/jpa/JPADeleteClause.java @@ -11,6 +11,7 @@ import javax.persistence.EntityManager; import javax.persistence.Query; import com.mysema.query.DefaultQueryMetadata; +import com.mysema.query.JoinType; import com.mysema.query.QueryMetadata; import com.mysema.query.dml.DeleteClause; import com.mysema.query.hql.HQLSerializer; @@ -39,7 +40,7 @@ public class JPADeleteClause implements DeleteClause{ public JPADeleteClause(EntityManager entityManager, PEntity entity, HQLTemplates templates){ this.entityManager = entityManager; this.templates = templates; - metadata.addFrom(entity); + metadata.addJoin(JoinType.DEFAULT, entity); } @Override diff --git a/querydsl-hql/src/main/java/com/mysema/query/hql/jpa/JPAUpdateClause.java b/querydsl-hql/src/main/java/com/mysema/query/hql/jpa/JPAUpdateClause.java index eda96a9e6..c62f9a359 100644 --- a/querydsl-hql/src/main/java/com/mysema/query/hql/jpa/JPAUpdateClause.java +++ b/querydsl-hql/src/main/java/com/mysema/query/hql/jpa/JPAUpdateClause.java @@ -11,6 +11,7 @@ import javax.persistence.EntityManager; import javax.persistence.Query; import com.mysema.query.DefaultQueryMetadata; +import com.mysema.query.JoinType; import com.mysema.query.QueryMetadata; import com.mysema.query.dml.UpdateClause; import com.mysema.query.hql.HQLSerializer; @@ -40,7 +41,7 @@ public class JPAUpdateClause implements UpdateClause{ public JPAUpdateClause(EntityManager em, PEntity entity, HQLTemplates templates){ this.entityManager = em; this.templates = templates; - metadata.addFrom(entity); + metadata.addJoin(JoinType.DEFAULT, entity); } @Override diff --git a/querydsl-jdoql/src/main/java/com/mysema/query/jdoql/JDOQLSubQuery.java b/querydsl-jdoql/src/main/java/com/mysema/query/jdoql/JDOQLSubQuery.java index 83614b0a0..f6fc66c7c 100644 --- a/querydsl-jdoql/src/main/java/com/mysema/query/jdoql/JDOQLSubQuery.java +++ b/querydsl-jdoql/src/main/java/com/mysema/query/jdoql/JDOQLSubQuery.java @@ -8,6 +8,7 @@ package com.mysema.query.jdoql; import java.util.Collection; import com.mysema.query.DefaultQueryMetadata; +import com.mysema.query.JoinType; import com.mysema.query.QueryMetadata; import com.mysema.query.support.DetachableQuery; import com.mysema.query.types.Expr; @@ -44,7 +45,7 @@ public class JDOQLSubQuery extends DetachableQuery{ } public

JDOQLSubQuery from(Path> target, PEntity

alias){ - queryMixin.getMetadata().addFrom(OSimple.create(alias.getType(), Ops.ALIAS, target.asExpr(), alias)); + queryMixin.getMetadata().addJoin(JoinType.DEFAULT, OSimple.create(alias.getType(), Ops.ALIAS, target.asExpr(), alias)); return this; } diff --git a/querydsl-jdoql/src/main/java/com/mysema/query/jdoql/dml/JDOQLDeleteClause.java b/querydsl-jdoql/src/main/java/com/mysema/query/jdoql/dml/JDOQLDeleteClause.java index 1442debac..b0a8d6891 100644 --- a/querydsl-jdoql/src/main/java/com/mysema/query/jdoql/dml/JDOQLDeleteClause.java +++ b/querydsl-jdoql/src/main/java/com/mysema/query/jdoql/dml/JDOQLDeleteClause.java @@ -13,6 +13,7 @@ import javax.jdo.PersistenceManager; import javax.jdo.Query; import com.mysema.query.DefaultQueryMetadata; +import com.mysema.query.JoinType; import com.mysema.query.QueryMetadata; import com.mysema.query.dml.DeleteClause; import com.mysema.query.jdoql.JDOQLSerializer; @@ -44,7 +45,7 @@ public class JDOQLDeleteClause implements DeleteClause{ this.entity = entity; this.persistenceManager = persistenceManager; this.templates = templates; - metadata.addFrom(entity); + metadata.addJoin(JoinType.DEFAULT, entity); } @Override