Ami*_*iko 4 java postgresql spring jdbc spring-boot
我在将整数数组插入 Postgresql 表时遇到问题,我该如何解决?
String sql = "INSERT INTO draw_result (id, ball_numbers, balls_with_mega_ball, draw_dates, mega_plier) VALUES(?, ?, ?, ?, ?)";
Object[] params = {randomNumbers, ballNumbers, ballNumbersMegaBall, drawDates, megaPlier};
jdbcTemplate.update(sql, params);
Run Code Online (Sandbox Code Playgroud)
其中 ballNumbers 和 ballNumbersMegaBall 是 ArrayList。填充2位数字。
这是 PostgreSQL 表:
CREATE TABLE public.draw_result
(
id bigint NOT NULL,
draw_dates date,
ball_numbers bigint[],
balls_with_mega_ball bigint[],
mega_plier bigint,
CONSTRAINT draw_result_pkey PRIMARY KEY (id)
)
Run Code Online (Sandbox Code Playgroud)
这是来自 Springboot 的错误:
出现意外错误(类型=内部服务器错误,状态=500)。PreparedStatementCallback; 错误的 SQL 语法 [INSERT INTO draw_result (id, >ball_numbers, balls_with_mega_ball, draw_dates, mega_plier) VALUES(?, ?, ?, ?, >?)]; 嵌套异常是 org.postgresql.util.PSQLException:无法推断用于 java.util.ArrayList 实例的 SQL > 类型。使用带有 >explicit Types 值的 setObject() 来指定要使用的类型。
最近我遇到了类似的问题。我的解决方案:
public void setDrawResult(BigInteger id, List<BigInteger> ballNumbers, List<BigInteger> ballsWithMegaBall, Date drawDates,BigInteger megaPlier){
String sql = "INSERT INTO draw_result (id, ball_numbers, balls_with_mega_ball, draw_dates, mega_plier) VALUES(?, ?, ?, ?, ?)";
jdbcTemplate.update(sql
, id
, createSqlArray(ballNumbers)
, createSqlArray(ballsWithMegaBall)
, drawDates
, megaPlier
);
}
private java.sql.Array createSqlArray(List<BigInteger> list){
java.sql.Array intArray = null;
try {
intArray = jdbcTemplate.getDataSource().getConnection().createArrayOf("bigint", list.toArray());
} catch (SQLException ignore) {
}
return intArray;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4637 次 |
| 最近记录: |