我如何使用一个函数说数字与 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)))
等等