我正在尝试在自引用实体上进行嵌套连接,请耐心等待,这将是有道理的:)
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”的结果