我如何使用一个函数说数字与 Spring JPA 和本机查询和 DB2
How can I use a function say digits with Spring JPA and native query and DB2
我希望能够使用这个函数,他们传递参数。但是我得到了这个错误,几乎是 spring jpa 或 java 准备好的语句不允许我这样做。
日志中的代码如下所示。
Hibernate: UPDATE DB2PROD.GLOBAL_TABLE
设置 CONTRACT_ID = 数字( ? )
其中 GLOBAL_ID = ?
@Query(value = "UPDATE DB2PROD.GLOBAL_TABLE \n" +
" SET CONTRACT_ID = DIGITS( :indicator ) \n" +
" WHERE GLOBAL_ID = :id ", nativeQuery = true)
int update(final Integer indicator, final String id);
错误:
2022-03-11 15:54:25.982 WARN 95241 --- [ scheduling-1]
o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: -418, SQLState:
42610 2022-03-11 15:54:25.982 ERROR 95241 --- [ scheduling-1]
o.h.engine.jdbc.spi.SqlExceptionHelper : DB2 SQL Error:
SQLCODE=-418, SQLSTATE=42610, SQLERRMC=null, DRIVER=4.25.13 2022-03-11
15:54:25.982 WARN 95241 --- [ scheduling-1]
o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: -516, SQLState:
26501 2022-03-11 15:54:25.983 ERROR 95241 --- [ scheduling-1]
o.h.engine.jdbc.spi.SqlExceptionHelper : DB2 SQL Error:
SQLCODE=-516, SQLSTATE=26501, SQLERRMC=null, DRIVER=4.25.13 2022-03-11
15:54:25.983 WARN 95241 --- [ scheduling-1]
o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: -518, SQLState:
07003 2022-03-11 15:54:25.983 ERROR 95241 --- [ scheduling-1]
o.h.engine.jdbc.spi.SqlExceptionHelper : DB2 SQL Error:
SQLCODE=-518, SQLSTATE=07003, SQLERRMC=null, DRIVER=4.25.13 2022-03-11
15:54:26.017 ERROR 95241 --- [ scheduling-1]
c.p.p.m.contacts.service.ContactService : Error on save contact
Db2 无法确定 DIGITS (?)
表达式中参数的数据类型。
您必须使用 CAST
明确定义它,例如:
DIGITS (CAST (? AS INT))
或
DIGITS (CAST (? AS DEC (5)))
等等
我希望能够使用这个函数,他们传递参数。但是我得到了这个错误,几乎是 spring jpa 或 java 准备好的语句不允许我这样做。
日志中的代码如下所示。
Hibernate: UPDATE DB2PROD.GLOBAL_TABLE
设置 CONTRACT_ID = 数字( ? ) 其中 GLOBAL_ID = ?
@Query(value = "UPDATE DB2PROD.GLOBAL_TABLE \n" +
" SET CONTRACT_ID = DIGITS( :indicator ) \n" +
" WHERE GLOBAL_ID = :id ", nativeQuery = true)
int update(final Integer indicator, final String id);
错误:
2022-03-11 15:54:25.982 WARN 95241 --- [ scheduling-1] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: -418, SQLState: 42610 2022-03-11 15:54:25.982 ERROR 95241 --- [ scheduling-1] o.h.engine.jdbc.spi.SqlExceptionHelper : DB2 SQL Error: SQLCODE=-418, SQLSTATE=42610, SQLERRMC=null, DRIVER=4.25.13 2022-03-11 15:54:25.982 WARN 95241 --- [ scheduling-1] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: -516, SQLState: 26501 2022-03-11 15:54:25.983 ERROR 95241 --- [ scheduling-1] o.h.engine.jdbc.spi.SqlExceptionHelper : DB2 SQL Error: SQLCODE=-516, SQLSTATE=26501, SQLERRMC=null, DRIVER=4.25.13 2022-03-11 15:54:25.983 WARN 95241 --- [ scheduling-1] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: -518, SQLState: 07003 2022-03-11 15:54:25.983 ERROR 95241 --- [ scheduling-1] o.h.engine.jdbc.spi.SqlExceptionHelper : DB2 SQL Error: SQLCODE=-518, SQLSTATE=07003, SQLERRMC=null, DRIVER=4.25.13 2022-03-11 15:54:26.017 ERROR 95241 --- [ scheduling-1] c.p.p.m.contacts.service.ContactService : Error on save contact
Db2 无法确定 DIGITS (?)
表达式中参数的数据类型。
您必须使用 CAST
明确定义它,例如:
DIGITS (CAST (? AS INT))
或
DIGITS (CAST (? AS DEC (5)))
等等