Java org.postgresql.util.PSQLException:未为参数11指定值

Java org.postgresql.util.PSQLException:未为参数11指定值,java,postgresql,prepared-statement,Java,Postgresql,Prepared Statement,我在语句中设置了10个带问号的参数,并提供了10个相关值。在执行时,它抛出了这个错误“org.postgresql.util.psqleexception:没有为参数11指定值”。我在另一个表中遇到了类似的问题,其中它还请求一个超出范围的参数。我可以对PostGres手动运行查询,没有任何问题。请看下面的日志,提前谢谢 [DBOperations]:INSERT INTO product.SHIB_RP_MD_PROVIDER(RP_MD_PROVIDER_ID,MD_PROVIDER_TYPE

我在语句中设置了10个带问号的参数,并提供了10个相关值。在执行时,它抛出了这个错误“org.postgresql.util.psqleexception:没有为参数11指定值”。我在另一个表中遇到了类似的问题,其中它还请求一个超出范围的参数。我可以对PostGres手动运行查询,没有任何问题。请看下面的日志,提前谢谢

[DBOperations]:INSERT INTO product.SHIB_RP_MD_PROVIDER(RP_MD_PROVIDER_ID,MD_PROVIDER_TYPE_ID,MD_ID,SRC_ORG_ID,MD_NAME,MD_DESC,PARENT_RP_MD_PROVIDER_ID,LAST_UPDATE_USER,LAST_UPDATE_DATE,SYSTEM_IND,ORG_ID) VALUES (?,?,?,?,?,?,?,?,date_trunc('second' , now()),?,?)

[DBOperations]:No value specified for parameter 11. org.postgresql.util.PSQLException: No value specified for parameter 11.

[DBOperations] - Index 1 - Value 10042
[DBOperations] - Index 2 - Value 4
[DBOperations] - Index 3 - Value aa
[DBOperations] - Index 4 - Value 2
[DBOperations] - Index 5 - Value aa
[DBOperations] - Index 6 - Value null
[DBOperations] - Index 7 - Value 0
[DBOperations] - Index 8 - Value 1234
[DBOperations] - Index 9 - Value 0
[DBOperations] - Index 10 - Value 2

答案很明显。但我还是要指出,您有
11个问号
,这意味着您应该添加
11个值
来执行查询,但在您的代码中,您只添加了
10个
,因此异常
“没有为11指定值”

将所有参数正确地分配给这些值

for (User user : users) {
    System.out.println("Inserting Data for Userr name" + user.getName());
    jdbcTemplate.update("insert into USERR(Id,Name,Dept,Salary) 
    values(?,?,?,?)",
    preparedStatement -> {
        preparedStatement.setLong(1,user.getId());
        preparedStatement.setString(2, user.getName());
        preparedStatement.setString(3, user.getDept());
        preparedStatement.setLong(4, user.getSalary());

    });

实际上有11个参数。你是不是不小心多加了一个?我只数了10个问号。我正在为其中一列传入date\u trunc('second',now())。因此,我假设我不需要为此打问号。用
替换该部分,稍后添加值。不要立即向
9添加值向
10和11添加值
for (User user : users) {
    System.out.println("Inserting Data for Userr name" + user.getName());
    jdbcTemplate.update("insert into USERR(Id,Name,Dept,Salary) 
    values(?,?,?,?)",
    preparedStatement -> {
        preparedStatement.setLong(1,user.getId());
        preparedStatement.setString(2, user.getName());
        preparedStatement.setString(3, user.getDept());
        preparedStatement.setLong(4, user.getSalary());

    });