gpt4 book ai didi

java - Spring JPA - 具有该位置 [1] 的参数不存在

转载 作者:行者123 更新时间:2023-12-02 12:06:00 26 4
gpt4 key购买 nike

我尝试对 Spring JPA 存储库使用 native 查询,但不断出现异常。

这是我的查询存储库,我不知道为什么我不断收到异常,因为我设置了 @Param 值,我也转义了 : 字符,我想我也没有没有 [1] 参数,因为我的参数应该是 :lastUpdate 而不是 ?1

@Qualifier("eipoEnergyRepository")
public interface EipoEnergyRepository extends JpaRepository<Energy, Integer> {

@Query(value = "select max(REALENERGY) as REALENERGY, e.OBJECTID as object, "
+ "DATE_FORMAT(MAX(LASTUPDATE),'%Y-%m-%d %H\\:%i\\:00') AS LASTUPDATE "
+ "from ENERGY e WHERE str_to_date(LASTUPDATE, '%Y-%m-%d %H\\:%i\\:%s' ) > str_to_date(':lastUpdate', '%Y-%m-%d %H\\:%i\\:%s' ) "
+ "group by ROUND(UNIX_TIMESTAMP(LASTUPDATE)/600), e.object", nativeQuery=true)
List<Energy> findByLastUpdate(@Param("lastUpdate") String lastUpdate);


}

最佳答案

这与 https://jira.spring.io/browse/DATAJPA-1235 相关基本上,字符串文字中冒号的处理已被破坏:-(

解决方法是去掉查询中可能被解释为绑定(bind)参数的冒号。

根据您的情况,选项可能是:

a) 使用 trunc如果您使用 Oracle 来降低比较日期的精度。这就是您想要在 where 子句中执行的操作,对吧?其他数据库可能有类似的功能。

b) 使用不同的字符并将其替换为 java 端的冒号。

关于java - Spring JPA - 具有该位置 [1] 的参数不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46907543/

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