我有两个JPA实体:
@Entity
public class TaskSchedule {
...
private String name;
...
}
@Entity
public class Task {
...
private String description;
@ManyToOne
private TaskSchedule taskSchedule;
...
}
我想要一个如下所示的查询:
select t
from Task t
where t.description like '%text%' or t.taskSchedule.name like '%text%'
并非所有任务都有TaskSchedule。上面的JPQL查询在生成的SQL中生成一个内部联接,它排除了没有TaskSchedule的所有任务。
如何告诉JPA在生成的SQL中执行外连接?
我使用Hibernate EntityManager作为JPA实现。
谢谢, 戴夫
答案 0 :(得分:1)
您可以像在SQL中一样通过LEFT [OUTER] JOIN
关键字在JPQL中建立外部联接。 JPQL Language Reference就是一个非常好的例子。
Freehanding this,完成的JPQL可能看起来类似于:
select t
from Task t left outer join t.taskSchedule ts
where t.description like '%text%' or ts.name like '%text%'