public void testSingleIN() { QueryFactory qf = getQueryFactory(); Query q = qf.from(getModelFactory().getUserImplClass()) .having("surname").in("Man") .and() .having("gender").eq(User.Gender.MALE) .build(); List<User> list = q.list(); assertEquals(1, list.size()); assertEquals(2, list.get(0).getId()); assertEquals("Man", list.get(0).getSurname()); assertEquals(User.Gender.MALE, list.get(0).getGender()); } }
/** * This test uses fields that are not marked as @NumericField so it cannot work correctly with Lucene but should work * correctly for non-indexed. */ public void testAnd5() { QueryFactory qf = getQueryFactory(); Query q = qf.from(getModelFactory().getUserImplClass()) .having("id").lt(1000) .and().having("age").lt(1000) .build(); List<User> list = q.list(); assertEquals(1, list.size()); assertEquals(1, list.get(0).getId()); }
public void testContradiction() { QueryFactory qf = getQueryFactory(); Query q = qf.from(getModelFactory().getUserImplClass()) .having("name").gt("A").and().having("name").lte("A") .build(); List<User> list = q.list(); assertTrue(list.isEmpty()); }
public void testEqHybridQueryWithPredicateOptimisation() { QueryFactory qf = getQueryFactory(); Query q = qf.from(getModelFactory().getUserImplClass()) .having("notes").like("%ipsum%") .and(qf.having("name").eq("John").or().having("name").eq("Jane")) .build(); List<User> list = q.list(); assertEquals(1, list.size()); assertEquals("Lorem ipsum dolor sit amet", list.get(0).getNotes()); }
public void testSampleDomainQuery2() { QueryFactory qf = getQueryFactory(); // all male users, but this time retrieved in a twisted manner Query q = qf.from(getModelFactory().getUserImplClass()) .orderBy("name", SortOrder.ASC) .not(qf.having("gender").eq(User.Gender.FEMALE)) .and(qf.not().not(qf.having("gender").eq(User.Gender.MALE))) .build(); List<User> list = q.list(); assertEquals(2, list.size()); assertEquals("John", list.get(0).getName()); assertEquals("Spider", list.get(1).getName()); }
public void testAnd4() { QueryFactory qf = getQueryFactory(); //test for parenthesis, "and" should have higher priority Query q = qf.from(getModelFactory().getUserImplClass()) .having("name").eq("Spider") .or(qf.having("name").eq("John")) .and(qf.having("surname").eq("Man")) .build(); List<User> list = q.list(); assertEquals(2, list.size()); }
.and().having("name").eq("John").or().having("name").eq("Johny") .build(); ContinuousQuery<Object, Object> cq1 = Search.getContinuousQuery(cache());