@Entity
class A{
@OneToOne(optional=true)
@JoinColumn(foreignKey = @ForeignKey(name = "FK_USER"), nullable = true)
B b;
..other fields...
}
@Entity
class B{
....
}
我想获取表 A 的行。 我正在发出 jpql 请求
select new ADTO(b,..other fields(don't necessarily all)...) from A
(ADTO - data transfer object)
它是有效的,但只是当 A::b 不为空时。 如果 A::b 为 null,则不会选择该行。
如果我有另一个请求,即使行内容为 null A::b,它也能正常工作
select new ADTO(..filds without A::b...) from A
如何选择 A::b 可为空的行?
最佳答案
为了不与别名和实体名称混淆,我将实体 A 和 B 重命名为 Parent 和 Child,然后使用外部联接进行查询,如下所示:
select new ParentDTO(c, p.otherfield) from Parent p left join p.child c
关于java - jpql,获取具有可为空变量的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32056977/