Java Criteria API加入自引用实体

时间:2014-10-31 07:56:57

标签: java spring spring-data criteria criteria-api

我正在尝试在自引用实体上进行嵌套连接,请耐心等待,这将是有道理的:)

Thing.java

class Thing {
  Integer something;
  Person owner;
}

Person.java

class Person {
  String name;
  Person parent; 
}

注意:具有parent = null的Person表示它们是父级,并且不能拥有父级。这是一个外星世界! :P

查询:

Root<Thing> root = query.from(Thing.class);

Join<Thing, Person> ownerJoin = root.join(Thing_.owner);
Join<Person, Person> parentJoin = ownerJoin.join(Person_.parent);

Path<String> ownerNameField = ownerJoin.get(Person_.name);
Path<String> parentNameField = parentJoin.get(Person_.name);

return cb.or(cb.equal(ownerNameField, "John"), cb.equal(parentNameField, "John"));

所以基本上,我试图找到属于我的“东西”,或者我是拥有“东西”的人的父母。

我试图生成的SQL语句应该看起来像这样:

SELECT * FROM Thing t 
WHERE 
    t.something = 1 
    AND (t.owner.name = "John" OR t.owner.parent.name = "John")

现在的问题是,根据这个标准,它只给我 t.owner.parent.name =“John”的结果

0 个答案:

没有答案
相关问题