我需要将一个BigInteger参数传递给SQL查询(在Postgres 9.2上)。 我的DAO中有以下代码:
public List<PersonInfo> select(String id) {
BigInteger bigIntId = new BigInteger(id);
JdbcTemplate select = new JdbcTemplate(dataSource);
return select
.query("SELECT * FROM PE.SUPPLIER_INPUT_DATA WHERE ID = ?",
new Object[] { bigIntId },
new PersonRowMapper());
}
我遇到了以下异常:
{"error":"Error invoking getPersonInfoById.[org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback;
bad SQL grammar [SELECT * FROM PE.SUPPLIER_INPUT_DATA WHERE ID = ?];
nested exception is org.postgresql.util.PSQLException:
Can't infer the SQL type to use for an instance of java.math.BigInteger.
Use setObject() with an explicit Types value to specify the type to use.]"}
id是bigint类型。
尝试传递普通字符串 - 也会抛出类型异常。 在异常中搜索消息 - 没有相关结果。 有什么想法吗?
BigInteger
,你需要使用其他数据类型(例如具有0精度比例的BigDecimal),或查找PostgreSQL驱动程序是否提供一些特定于实现的方法来设置BigInteger值。 - Mark Rotteveel