From 117f4e66c7b2c1533764db7dde94c44064be9a5b Mon Sep 17 00:00:00 2001 From: Joel Takvorian Date: Mon, 6 Jul 2015 10:18:04 +0200 Subject: [PATCH] Fix issue #1427, ignore parent in query when using delegate "as" --- .../main/java/com/querydsl/mongodb/MongodbSerializer.java | 3 ++- .../com/querydsl/mongodb/PolymorphicCollectionTest.java | 7 ------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/querydsl-mongodb/src/main/java/com/querydsl/mongodb/MongodbSerializer.java b/querydsl-mongodb/src/main/java/com/querydsl/mongodb/MongodbSerializer.java index 06acde186..fcb0177e3 100644 --- a/querydsl-mongodb/src/main/java/com/querydsl/mongodb/MongodbSerializer.java +++ b/querydsl-mongodb/src/main/java/com/querydsl/mongodb/MongodbSerializer.java @@ -326,7 +326,8 @@ public abstract class MongodbSerializer implements Visitor { if (metadata.getParent() != null) { if (metadata.getPathType() == PathType.COLLECTION_ANY) { return visit(metadata.getParent(), context); - } else if (metadata.getParent().getMetadata().getPathType() != PathType.VARIABLE) { + } else if (metadata.getParent().getMetadata().getPathType() != PathType.VARIABLE + && metadata.getParent().getMetadata().getPathType() != PathType.DELEGATE) { String rv = getKeyForPath(expr, metadata); return visit(metadata.getParent(), context) + "." + rv; } diff --git a/querydsl-mongodb/src/test/java/com/querydsl/mongodb/PolymorphicCollectionTest.java b/querydsl-mongodb/src/test/java/com/querydsl/mongodb/PolymorphicCollectionTest.java index 059c9bfb1..13130a9d8 100644 --- a/querydsl-mongodb/src/test/java/com/querydsl/mongodb/PolymorphicCollectionTest.java +++ b/querydsl-mongodb/src/test/java/com/querydsl/mongodb/PolymorphicCollectionTest.java @@ -59,8 +59,6 @@ public class PolymorphicCollectionTest { @Test public void countFishFromNameAndBreedWithCast() { - // Fails because generated query is { "name" : "f1" , "food.breed" : "unknown"} - // instead of { "name" : "f1" , "breed" : "unknown"} assertEquals(where(QFood.food.name.eq("f1") .and(QFood.food.as(QFish.class).breed.eq("unknown"))).fetchCount(), 1); } @@ -70,11 +68,6 @@ public class PolymorphicCollectionTest { assertEquals(where(isFish()).fetchCount(), 2); } - @Test - public void countFishesWithInstanceOf() { - assertEquals(where(QFood.food.instanceOf(Fish.class)).fetchCount(), 2); - } - private Predicate isFish() { return QFood.food.name.startsWith("f"); }