jpql,用可空变量获取行

时间:2015-08-17 18:11:09

标签: java spring hibernate select jpql

@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?

的行

1 个答案:

答案 0 :(得分:1)

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

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