【发布时间】:2023-03-12 08:44:01
【问题描述】:
我得到以下 SQL 语句:
SELECT p.category_id, COUNT(p.id)
FROM products p
WHERE p.name ILIKE 'product%'
GROUP BY p.category_id
我想将其转换为该实体的 HQL:
产品:
private Long id;
@NotNull
private String name;
@NotNull
private String description;
@NotNull
private String image;
@NotNull
private Double price;
@ManyToOne
private Category category;
我得到的是:
@Query("SELECT p.category.id, COUNT(p.id) " +
"FROM Product p " +
"WHERE p.name LIKE ?1 " +
"GROUP BY p.category.id")
List<SearchDetail> findSearchDetailsByName(String phrase);
但它给了我以下错误: https://pastebin.com/h4yBPc7d
【问题讨论】:
-
首先你用的是spring data吗?否则你查询的应该看起来像
@Query(nativeQuery = true, value="SELECT p.category_id, COUNT(p.id) as var FROM products p WHERE p.name LIKE: name GROUP BY p.category_id") List<SearchDetail> findSearchDetailsByName(@Param("name")String phrase); -
您的 SearchDetail 是一个 jpa 实体?还是只是一个简单的pojo?
-
当然我使用的是 spring-data,这是我的存储库:pastebin.com/S96Bcgvm 并且 SearchDetail 是一个 POJO:pastebin.com/Hnfnd2ra
标签: postgresql hibernate spring-boot hql