首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring-data-JPA :连接查询最佳实践

Spring-data-JPA :连接查询最佳实践
EN

Stack Overflow用户
提问于 2018-01-24 15:06:45
回答 1查看 1.1K关注 0票数 2

我有两张桌子T1和T2。

我必须从表T1中获取anotherColumn在T2中为null或在T2中不存在的记录。

表T1与T2的实体关系

代码语言:javascript
复制
@OneToMany(mappedBy="t2")
private List<T2> t2s;

表T2与T1的实体关系

代码语言:javascript
复制
@ManyToOne
@JoinColumn(name="pId")
private T1 t1;

在上面的场景中,它应该返回表T1中的第二条和第三条记录。

代码语言:javascript
复制
@Query("select t1 from T1 t1 where NOT EXISTS (select t2 from T2 t2 where t1.id = t2.pId) OR EXISTS (select t2 from T2 t2 where t1.id = t2.pId OR t2.anotherColumn=null)")
public List<T2> findDisconnected(); 

因为我使用的是内部子查询,所以需要更多的时间。

代码语言:javascript
复制
Could please someone helps me,  
1) How can I optimize the above query? 
2) What is the best way to use join queries in Spring-data-jpa?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-24 15:27:52

这就是你要找的吗?

代码语言:javascript
复制
select * from T1 t1 full join T2 t2 on t1.id = t2.pId where t2.anotherColumn is NULL

在这里,您完全连接了两个表,并获取了另一列中具有空值的所有记录。

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

https://stackoverflow.com/questions/48416672

复制
相关文章

相似问题

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