【发布时间】:2017-12-14 05:41:51
【问题描述】:
我用 MySQL 编写了这个查询,它可以工作:
select c.*
from macchine.check_list c
join (select pratica, documentazione, max(versione) as versione
from macchine.check_list
group by pratica, documentazione) c2
on c.pratica = c2.pratica
and c.documentazione = c2.documentazione
and c.versione = c2.versione;
然后我尝试使用 JPA 存储库在我的网络应用程序上移动此查询:
@Query("select t1 from CheckList as t1 join "
+ "(select pratica, documentazione, max(versione) as versione from CheckList group by pratica, documentazione) as t2 "
+ "on t1.pratica = t2.pratica and "
+ "t1.documentazione = t2.documentazione and "
+ "t1.versione = t2.versione")
但它不起作用,因为我知道,要创建与 JPA 存储库的连接,您必须执行以下操作:
form table1 t1 join t1.table2 t2 on etc.
但在这种情况下,我需要在同一张表上进行连接,那么我该怎么做呢?
【问题讨论】:
-
但是您没有加入同一个表(在您的原始查询中)。您正在加入涉及该表的聚合查询的内联视图。这根本不是一回事。
-
并且 JPQL 不会对子查询执行 JOIN,因为任何有信誉的 JPA 文档都会告诉您
-
@NeilStockton 好的,所以我的问题是:有没有办法做到这一点?还是不可能?
标签: java spring spring-mvc spring-data-jpa jpql