【发布时间】:2018-01-24 07:06:44
【问题描述】:
我有两张桌子 T1 和 T2。
我必须从表 T1 中获取另一列在 T2 中为空或在 T2 中不存在的记录。
Table T1 Entity 与 T2 的关系
@OneToMany(mappedBy="t2")
private List<T2> t2s;
Table T2 Entity 与 T1 的关系
@ManyToOne
@JoinColumn(name="pId")
private T1 t1;
在上述场景中,它应该从表 T1 中返回第 2 条和第 3 条记录。
@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();
由于我使用的是内部子查询,因此需要更多时间。
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?
【问题讨论】:
-
你的表结构不清楚。你的2张桌子之间有什么关系吗?
-
@GarimaGupta 是的,表 T2 保存表 T1 的 ID。即表T2中的第二列
-
那么,T2 与 T1 有 ManyToOne 关系?
-
@GarimaGupta 是的,我已经添加了这些细节。请查看修改
标签: spring spring-boot spring-data spring-data-jpa