@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?
的行答案 0 :(得分:1)
为了不与别名和实体名称混淆,我将您的实体A和B重命名为Parent和Child,然后使用外部联接查询,如下所示:
select new ParentDTO(c, p.otherfield) from Parent p left join p.child c