首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用LEFT OUTER JOIN创建JPA查询

如何使用LEFT OUTER JOIN创建JPA查询
EN

Stack Overflow用户
提问于 2012-04-18 11:40:59
回答 4查看 131.3K关注 0票数 31

我开始学习JPA,并基于我在SQL Server中测试的以下原生SQL实现了一个使用JPA查询的示例:

代码语言:javascript
复制
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查询:

代码语言:javascript
复制
SELECT f FROM Student f LEFT JOIN f.Class1 s;

正如您所看到的,我仍然缺少原始查询中的条件OR s.ClassID = f.Class2。我的问题是,如何将其放入我的JPQL中?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-04-18 12:45:17

写下这篇文章;

代码语言:javascript
复制
 SELECT f from Student f LEFT JOIN f.classTbls s WHERE s.ClassName = 'abc'

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

票数 47
EN

Stack Overflow用户

发布于 2013-03-21 22:35:07

如果你有实体A和B,它们之间没有任何关系,并且每个A都有严格的0或1个B,你可以这样做:

代码语言:javascript
复制
select a, (select b from B b where b.joinProperty = a.joinProperty) from A a

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

票数 18
EN

Stack Overflow用户

发布于 2012-04-18 21:49:00

通常,ON子句来自映射的连接列,但是JPA2.1草案允许在新的ON子句中添加额外的条件。

看见,

http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Querying/JPQL#ON

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10202456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档