Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java标准API连接自引用实体_Java_Spring_Spring Data_Criteria_Criteria Api - Fatal编程技术网

Java标准API连接自引用实体

Java标准API连接自引用实体,java,spring,spring-data,criteria,criteria-api,Java,Spring,Spring Data,Criteria,Criteria Api,我正在尝试在自引用实体上进行嵌套联接,请耐心等待,这很有意义:) Thing.java class Thing { Integer something; Person owner; } class Person { String name; Person parent; } Person.java class Thing { Integer something; Person owner; } class Person { String name; Per

我正在尝试在自引用实体上进行嵌套联接,请耐心等待,这很有意义:)

Thing.java

class Thing {
  Integer something;
  Person owner;
}
class Person {
  String name;
  Person parent; 
}
Person.java

class Thing {
  Integer something;
  Person owner;
}
class Person {
  String name;
  Person parent; 
}

注意:parent=null的人意味着他们是父母,不能有父母。这是一个陌生的世界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"));

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

名为John的所有者有父母吗?生成的SQL是什么?parent=null的人表示他们是家长,不能有家长。这是一个外星人世界hahat.owner.parent.name='John'创建一个内部连接。因此,此查询永远不会返回链接到无父所有者的thinh。你需要一个左连接。