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