@Test public void Nested_Any_BooleanOperation() { QCompany company = QCompany.company; Predicate predicate = company.departments.any().employees.any().firstName.eq("Bob"); assertMatches("exists \\(select 1\n" + "from company.departments as company_departments_.*\n" + " inner join company_departments_.*.employees as company_departments_.*_employees_.*\n" + "where company_departments_.*_employees_.*.firstName = \\?1\\)", serialize(predicate)); }
@Test public void And_Operation() { Predicate predicate = cat.kittens.any().name.eq("Ruth123").and(cat.kittens.any().bodyWeight.gt(10.0)); assertMatches("exists \\(select 1\n"+ "from cat.kittens as cat_kittens.*\n" + "where cat_kittens.*\\.name = \\?1\\) and exists \\(select 1\n" + "from cat.kittens as cat_kittens.*\n" + "where cat_kittens.*\\.bodyWeight > \\?2\\)", serialize(predicate)); }
@Test public void Path() { assertMatches("cat_kittens.*", serialize(cat.kittens.any())); }
@Test public void Longer_Path() { assertMatches("cat_kittens.*\\.name", serialize(cat.kittens.any().name)); }
@Test public void Simple_BooleanOperation() { Predicate predicate = cat.kittens.any().name.eq("Ruth123"); assertMatches("exists \\(select 1\n" + "from cat.kittens as cat_kittens.*\n" + "where cat_kittens.*\\.name = \\?1\\)", serialize(predicate)); }
@Test public void Any_In_Projection() { assertFalse(query().from(cat).list(cat.kittens.any()).isEmpty()); }
@Test public void Any_In1() { //select cat from Cat cat where exists ( // select cat_kittens from Cat cat_kittens where cat_kittens member of cat.kittens and cat_kittens in ?1) assertFalse(query().from(cat).where(cat.kittens.any().in(savedCats)).list(cat).isEmpty()); }
@Test public void Simple_StringOperation() { Predicate predicate = cat.kittens.any().name.substring(1).eq("uth123"); assertMatches("exists \\(select 1\n"+ "from cat.kittens as cat_kittens.*\n" + "where substring\\(cat_kittens.*\\.name,2\\) = \\?1\\)", serialize(predicate)); }
@Test public void Cast() { // JPAQuery query = new JPAQuery(em).from(QPerson.person); // QDog anyDog = QPerson.person.animals.any().as(QDog.class); // query.where(anyDog.gender.eq("M")); // List<Person> foundOwners = query.list(QPerson.person); QDomesticCat anyCat = QCat.cat.kittens.any().as(QDomesticCat.class); Predicate predicate = anyCat.name.eq("X"); assertMatches("exists \\(select 1\n" + "from cat.kittens as cat_kittens.*\n" + "where cat_kittens.*\\.name = \\?1\\)", serialize(predicate)); }
@Test public void Any_In_Order() { assertFalse(query().from(cat).orderBy(cat.kittens.any().name.asc()).list(cat).isEmpty()); }
@Test @ExcludeIn(Target.MYSQL) public void Delete_Where_Any() { delete(cat).where(cat.kittens.any().name.eq("XXX")).execute(); }
@Test public void In7() { query().from(cat).where(cat.kittens.any().in(savedCats)).count(); }
@Test public void OrderBy_Embeddable_Collection() { QBookVersion bookVersion = QBookVersion.bookVersion; QBookMark bookMark = new QBookMark("bookVersion_definition_bookMarks"); mixin.from(bookVersion); mixin.orderBy(bookVersion.definition.bookMarks.any().comment.asc()); QueryMetadata md = mixin.getMetadata(); assertEquals(Arrays.asList(new JoinExpression(JoinType.DEFAULT, bookVersion)), md.getJoins()); assertEquals(Arrays.asList(new StringPath(bookVersion.definition.bookMarks, "comment").asc()), md.getOrderBy()); }
@Test public void Any_Simple() { assertEquals(1, query().from(cat).where(cat.kittens.any().name.eq("Ruth123")).count()); }
@Test public void Not_Exists() { assertTrue(query().from(cat).where(cat.kittens.any().name.eq("XXX")).notExists()); }
@Test public void OrderBy_Any() { QCat cat = QCat.cat; QCat cat_kittens = new QCat("cat_kittens"); mixin.from(cat); mixin.orderBy(cat.kittens.any().name.asc()); QueryMetadata md = mixin.getMetadata(); assertEquals(Arrays.asList( new JoinExpression(JoinType.DEFAULT, cat), new JoinExpression(JoinType.LEFTJOIN, cat.kittens.as(cat_kittens))), md.getJoins()); assertEquals(Arrays.asList(cat_kittens.name.asc()), md.getOrderBy()); }
@Test public void Any_Serialized() throws Exception { Predicate where = cat.kittens.any().name.eq("Ruth234"); Predicate where2 = Serialization.serialize(where); assertEquals(0, query().from(cat).where(where).count()); assertEquals(0, query().from(cat).where(where2).count()); }