您需要在子查询之外使用r2而不是r@Query("SELECT r2 FROM Restaurant r2 WHERE EXISTS (SELECT r, COUNT(r) FROM Restaurant r INNER JOIN r.foods rf WHERE rf IN :foods AND r2=r GROUP BY r HAVING COUNT(r)=:size) AND r2.name LIKE '%:name%' AND r2.neighbourhood IN :neighbourhoods AND r.maxCapacity >= :maxCapacity")
1 回答

交互式爱情
TA贡献1712条经验 获得超3个赞
这不是您使用 JPA 和 Hibernate 进行分页的方式。LIMIT是 MySQL 和 PostgreSQL 特定的关键字,而不是 JPQL 关键字。
More,LIMIT(1)在 MySQL 中无效,因为 LIMIT 不是函数。您应该LIMIT 1在本机 SQL 查询而不是 JPQL 查询中像这样使用它。
所以,你需要使用setMaxResults方法:
List<Product> products = entityManager.createQuery("""
SELECT p
FROM Product p
ORDER BY p.created_on DESC
""", Product.class)
.setMaxResults(50)
.getResultList();
您没有ORDER BY在查询中使用这也是错误的,因为除非您使用ORDER BY.
添加回答
举报
0/150
提交
取消