简体   繁体   English

如何在Java Springboot中使用jdbcTemplate将Integer数组插入到postgresql表中?

[英]How to insert Integer array into postgresql table using jdbcTemplate in Java Springboot?

I have problems with inserting Integer array into Postgresql Table, how do I go about this? 我在将Integer数组插入Postgresql Table时遇到问题,该如何解决?

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);

Where ballNumbers and ballNumbersMegaBall are ArrayList. 其中ballNumbers和ballNumbersMegaBall是ArrayList。 Filled with 2 digit numbers. 填充2位数字。

Here is the PostgreSQL table: 这是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)
)

And here is the Error from Springboot : 这是Springboot的错误:

There was an unexpected error (type=Internal Server Error, status=500). 发生意外错误(类型=内部服务器错误,状态= 500)。 PreparedStatementCallback; PreparedStatementCallback; bad SQL grammar [INSERT INTO draw_result (id, >ball_numbers, balls_with_mega_ball, draw_dates, mega_plier) VALUES(?, ?, ?, ?, >?)]; 错误的SQL语法[INSERT INTO draw_result(id,> ball_numbers,balls_with_mega_ball,draw_dates,mega_plier)VALUES(?,?,?,?,>?)]; nested exception is org.postgresql.util.PSQLException: Can't infer the SQL >type to use for an instance of java.util.ArrayList. 嵌套异常是org.postgresql.util.PSQLException:无法推断用于java.util.ArrayList实例的SQL类型。 Use setObject() with an >explicit Types value to specify the type to use. 将setObject()与> explicit Types值一起使用以指定要使用的类型。

Recently I had a similar problem. 最近我有一个类似的问题。 My solution: 我的解决方案:

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;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何使用spring jdbctemplate而不是Java中的直接插入查询来调用PostgreSQL函数? - How to invoke PostgreSQL function using spring jdbctemplate instead of direct insert query in Java? 如何使用@InsertProvider在Postgresql Array(integer [])类型列中插入Java ArrayList - How to insert a java ArrayList in postgresql Array (integer[] ) type column using @InsertProvider Java Spring将Arraylist插入到PostgreSQL数据库JdbcTemplate中 - Java Spring Insert Arraylist into postgresql database JdbcTemplate 创建数据库和表,并在Springboot中使用Java将静态数据插入表中 - Create database and table, and to insert static data in to table using java in springboot 如何使用JDBCTemplate在PostgreSQL数据库的Java中调用存储的函数 - How to invoke stored function in java of PostgreSQL database with JDBCTemplate 如何在 java springboot 中获取 postgresql 列名 - How to get the postgresql column names in java springboot 如何在 postgreSql 中使用 JDBCTemplate batchUpdate 捕获错误记录? - How to Capture error records using JDBCTemplate batchUpdate in postgreSql? spring、jdbcTemplate、postgresql - 最后插入 id - spring, jdbcTemplate, postgresql - last insert id SpringBoot测试服务(使用带有JDBCTemplate的存储库) - SpringBoot test service (using repository with JDBCTemplate) 使用Statement在表中插入Java字节数组 - Insert java byte array in table using Statement
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM