如何使用左外连接创建 JPA 查询

2022-09-01 09:25:55

我开始学习JPA,并且基于我在SQL Server中测试的以下本机SQL,实现了JPA查询的示例:

SELECT f.StudentID, f.Name, f.Age, f.Class1, f.Class2 
FROM Student f 
    LEFT OUTER JOIN ClassTbl s ON s.ClassID = f.Class1 OR s.ClassID = f.Class2
WHERE s.ClassName = 'abc'

从上面的 SQL 中,我构造了以下 JPQL 查询:

SELECT f FROM Student f LEFT JOIN f.Class1 s;

如您所见,我仍然缺少原始查询中的条件。我的问题是,我怎样才能把它放到我的JPQL中?OR s.ClassID = f.Class2


答案 1

写这个;

 SELECT f from Student f LEFT JOIN f.classTbls s WHERE s.ClassName = 'abc'

因为您的学生实体与 ClassTbl 实体具有一对多关系。


答案 2

如果您有实体 A 和 B,它们之间没有任何关系,并且每个 A 严格有 0 或 1 B,则可以执行以下操作:

select a, (select b from B b where b.joinProperty = a.joinProperty) from A a

这将为单个结果提供一个 Object[]{a,b},或者为多个结果提供 List<Object[]{a,b}>。


推荐