gpt4 book ai didi

java - Spring Data JPQL 无法提取结果集

转载 作者:太空宇宙 更新时间:2023-11-04 14:17:17 26 4
gpt4 key购买 nike

我想获取分数和日期列在给定范围内的条目数,并按分数间隔分组。评分区间由给定的粒度确定。所以我想回答的问题是:在给定的时间段内,有多少个结果,分数在 0-25、26-50、56-75 等之间……在这种情况下,粒度为 25 .

以下 native SQL 查询会产生所需的结果:

SELECT result.score, COUNT(*), ((score-1) DIV 25) AS eqclass FROM v_result AS result GROUP BY (eqclass);

我想使用 @Query 注释用我自己的查询定义查询方法。

@Query("SELECT new com.example.ScoreDistribution(COUNT(scoreStatistics.score), (scoreStatistics.score - 1) / :granularity) FROM ScoreStatisticsEntity scoreStatistics WHERE start_date BETWEEN :startDate AND :endDate GROUP BY ((scoreStatistics.score - 1) / :granularity)")
List<ScoreDistribution> calculateDistributionByGranularity(@Param("startDate") DateTime startDate, @Param("endDate") DateTime endDate, @Param("granularity") int granularity);

ScoreDistribution 是一个简单的 bean,它不是一个实体。然而,ScoreStatisticsEntity 是一个实体,并且由 View 表支持。

我收到以下异常:

org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet

Hibernate API 文档指出:

public class SQLGrammarException extends JDBCException

Implementation of JDBCException indicating that the SQL sent to the database server was invalid (syntax error, invalid object references, etc).

所以,问题是:我的查询出了什么问题?

最佳答案

WHERE start_date 应该类似于 WHERE ScoreStatistics.startDate

关于java - Spring Data JPQL 无法提取结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27567634/

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