gpt4 book ai didi

Spring data jpa @Query - 无法为结果映射创建 "AS"别名

转载 作者:行者123 更新时间:2023-12-03 08:56:20 24 4
gpt4 key购买 nike

我将以下 JPQL-Query 的结果直接映射到 SpecialCustomDto 对象,而不是使用的 javax.persistency 实体对象 我的实体。但我不知道如何访问 COUNT(DISTINCT e.attributeB),它将映射到 SpecialCustomDto

这是查询。

@Repository
public interface MyEntityRepository extends JpaRepository<MyEntity, Long> {

@Query("SELECT new com.test.SpecialCustomDto(e.attributeA, COUNT(DISTINCT e.attributeB)) as specialCustomDto "
+ "FROM MyEntity e WHERE 5 = specialCustomDto.count GROUP BY e.attributeA")
List<SpecialCustomDto> getSpecialCustomDtos();
}

一旦我启动 spring-boot 应用程序,Hibernate 就会抛出以下错误:

Caused by: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: as near line 1, column...

我不知道如何访问新创建的 SpecialCustomDto 的聚合 COUNT(DISTINCT e.attributeB) 元素。如果没有附加的 WHERE 子句,映射将按预期工作。

最佳答案

可以使用HAVING将聚合函数用作条件。与 native SQL 相同。

SELECT new com.test.SpecialCustomDto(e.attributeA, COUNT(e.attributeB))
FROM MyEntity e
GROUP BY e.attributeA
HAVING COUNT(e.attributeB) = 5

关于Spring data jpa @Query - 无法为结果映射创建 "AS"别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55005652/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com