在SQL Server中使用Hibernate JPA的两个日期之间的平均差

问题描述 投票:0回答:1

我有一个包含以下列的表:id,task_type,start_time,end_time。我需要获取每个任务花费的平均时间。在SQL查询中,我可以做:

SELECT task_type, AVG(DATEDIFF(MS, end_time, start_time)) AS average_time GROUP BY task_type

我无法在JPA中使用DATEDIFF,因为它不受支持。如果我将nativeQury传递给JPA "@Query",它会将未包含在SELECT语句中的列名显示为Invalid,则假设如果将上述查询作为本机查询传递,则会出现错误the column name id is not valid

如果有人能够指出我在这里缺少的内容,那将是一个很大的帮助。

注意:该项目是一种微服务架构,数据库存储在Microsoft SQL Server中,并且API是在Spring Boot中编写的。

sql-server hibernate spring-boot jpa datediff
1个回答
0
投票
function()语法可能由于MS参数而不适合您(您可以

可能为此注册一个Hibernate用户类型,这很麻烦)。不过,在方言中注册功能应该可以正常工作。您可能需要自己实现SQLFunction,而不是使用StandardSQLFunction实现。

关于为何本机查询对您不起作用的原因,您要将查询映射到的结果类是什么?尝试使用具有与查询中使用的别名相同的属性名称的接口或DTO,类似于使用projections的方式。如果这不起作用,则应输入result set mapping

© www.soinside.com 2019 - 2024. All rights reserved.