Join HQL nullable属性不应被忽略,帮助?

Join HQL nullable属性不应被忽略,帮助?,join,hql,nullable,Join,Hql,Nullable,我有: 我有以下HQL: Class Foo { String name; String value; Foo parent; //Foo.parent is OneToOne and nullable } 在f.parent为null之前,查询工作正常。即使f.name或f.value匹配,当f.parent为null时,结果也会被抛出 所以说我有: FROM Foo f WHERE (lower(f.name) like concat( lower('string') , '%' ))

我有:

我有以下HQL:

Class Foo
{
String name;
String value;
Foo parent; //Foo.parent is OneToOne and nullable
}
在f.parent为null之前,查询工作正常。即使f.name或f.value匹配,当f.parent为null时,结果也会被抛出

所以说我有:

FROM Foo f WHERE 
(lower(f.name) like concat( lower('string') , '%' )) or
(lower(f.value) like concat( lower('string') , '%' )) or
(lower(f.parent.name) like concat( lower('string') , '%' ))
当我搜索“b”时,只返回b。我希望a和b都能退回

有什么建议吗


谢谢大家!

在查询中引用
f.parent.name
会在父属性上创建一个隐式的
内部联接。要包含由于没有父级而无法联接的行,必须显式使用
左外部联接

Foo a = new Foo();
a.name = "bob";
a.value = "chris";
a.parent = null;

Foo b = new Foo();
b.name = "Bob";
b.value="Chris";
b.parent = a;

谢谢你的回答,马丁。我在使用Oracle时遇到以下错误:ORA-00918:列定义不明确有没有办法解决这个问题?谢谢你的帮助!
from Foo f
left outer join f.parent as p
where
(lower(f.name) like concat( lower('string') , '%' )) or
(lower(f.value) like concat( lower('string') , '%' )) or
(lower(p.name) like concat( lower('string') , '%' ))