jpql,使用可为空变量获取行

jpql, fetching row with nullable variable

@Entity
class A{
   @OneToOne(optional=true)
   @JoinColumn(foreignKey = @ForeignKey(name = "FK_USER"), nullable = true)
   B b;
   ..other fields...
}

@Entity 
class B{
   ....
}

我想获取 table A 的行。 我正在发出 jpql 请求

select new ADTO(b,..other fields(don't necessarily all)...) from A 

(ADTO - data transfer object)

它是有效的,但只是在 A::b 不为空时。 如果 A::b 为空,则此行不会 selects.

如果我有另一个请求,即使行内容为空 A::b

select new ADTO(..filds without A::b...) from A 

如何 select 可以为 null A::b 的行?

为了不混淆别名和实体名称,我将您的实体 A 和 B 重命名为 Parent 和 Child,然后使用 outer join 查询它,如下所示:

select new ParentDTO(c, p.otherfield) from Parent p left join p.child c