您需要在子查詢之外使用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條經(jīng)驗 獲得超3個贊
這不是您使用 JPA 和 Hibernate 進行分頁的方式。LIMIT是 MySQL 和 PostgreSQL 特定的關鍵字,而不是 JPQL 關鍵字。
More,LIMIT(1)在 MySQL 中無效,因為 LIMIT 不是函數(shù)。您應該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
提交
取消