我正在尝试使用Spring JPA存储库的本机查询,但不断获得异常。
这是我的Repository与查询,我不知道为什么我一直得到异常,因为我设置了@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);
}
答案 0 :(得分:1)
这与https://jira.spring.io/browse/DATAJPA-1235基本上处理字符串文字中的冒号有关: - (
解决方法是删除可能被解释为绑定参数的查询中的冒号。
在您的情况下,选项可能是:
a)如果您使用Oracle来降低比较日期的精确度,请使用trunc
。这就是你在where子句中要做的事情,对吗?其他数据库可能具有类似的功能。
b)使用不同的字符并在java端用冒号替换它。