Hibernate 无法在自定义方言中注册 MySQL 的“LIMIT”功能

您需要在子查询之外使用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")


温温酱
浏览 187回答 1
1回答

交互式爱情

这不是您使用 JPA 和 Hibernate 进行分页的方式。LIMIT是 MySQL 和 PostgreSQL 特定的关键字,而不是 JPQL 关键字。More,LIMIT(1)在 MySQL 中无效,因为 LIMIT 不是函数。您应该LIMIT 1在本机 SQL 查询而不是 JPQL 查询中像这样使用它。所以,你需要使用setMaxResults方法:List<Product> products = entityManager.createQuery("""&nbsp; &nbsp; SELECT p&nbsp; &nbsp; FROM Product p&nbsp; &nbsp; ORDER BY p.created_on DESC&nbsp; &nbsp; """, Product.class).setMaxResults(50).getResultList();您没有ORDER BY在查询中使用这也是错误的,因为除非您使用ORDER BY.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java