package org.mongodb.morphia.query; import org.bson.types.ObjectId; import org.junit.Test; import org.mongodb.morphia.TestBase; import org.mongodb.morphia.annotations.Entity; import org.mongodb.morphia.annotations.Id; import org.mongodb.morphia.annotations.Property; import org.mongodb.morphia.annotations.Reference; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import static org.junit.Assert.assertEquals; public class QueryHasAnyOfForReferencedList extends TestBase { @Test public void testInQuery() throws Exception { Plan plan1 = new Plan(); plan1.name = "Trial"; Plan plan2 = new Plan(); plan2.name = "Trial"; getDs().save(plan1); getDs().save(plan2); Org org1 = new Org(); org1.plan = plan1; org1.name = "Test Org1"; Org org2 = new Org(); org2.plan = plan2; org2.name = "Test Org2"; getDs().save(org1); getDs().save(org2); long count = getDs().find(Org.class).field("name").equal("Test Org1").count(); assertEquals(1, count); List<Plan> plans = new ArrayList<Plan>(); plans.add(plan1); count = getDs().find(Org.class).field("plan").hasAnyOf(plans).count(); assertEquals(1, count); plans = new ArrayList<Plan>(); plans.add(plan1); plans.add(plan2); count = getDs().find(Org.class).field("plan").hasAnyOf(plans).count(); assertEquals(2, count); } @Entity(noClassnameStored = true) private static class Plan implements Serializable { @Id private ObjectId id; @Property("name") private String name; } @Entity(noClassnameStored = true) private static class Org implements Serializable { @Id private ObjectId id; @Property("name") private String name; @Reference("plan") private Plan plan; } }