首页 > 解决方案 > Spring Data Jpa 中的子查询

问题描述

我在 jpql 中有这样的查询

select new com.example.CustomGroup(m.id, m.title, (select count(w.id) from MessageGroup x join x.messages w where w.readers.id <> ?1) ) 
from MessageGroup m join m.members u where u.id = ?1

但不起作用,我知道 jpa 2 支持 select 中的子查询,但找不到任何关于如何使用它的参考

标签: jpaspring-data-jpajpa-2.1

解决方案


引用 JPA 2.2 规范第 4.6.16 段:

子查询可以用在 WHERE 或 HAVING 子句中。 [66]

[66] 在此版本中,子查询仅限于 WHERE 和 HAVING 子句。FROM 子句中对子查询的支持将在本规范的后续版本中考虑。


推荐阅读