Java 没有为参数1指定值

Java 没有为参数1指定值,java,database,hibernate,postgresql,Java,Database,Hibernate,Postgresql,我正在使用Hibernate连接postgres数据库。我正在尝试向数据库中插入一条记录。我有一个字符串数组中记录的值,该数组是从csv文件中获取的。这是我的dao代码 StringBuffer query=new StringBuffer("insert into t_wonlist values("); for(int i=0;i<67;i++){ query.append(values[i]+","); } qu

我正在使用Hibernate连接postgres数据库。我正在尝试向数据库中插入一条记录。我有一个字符串数组中记录的值,该数组是从csv文件中获取的。这是我的dao代码

StringBuffer query=new StringBuffer("insert into t_wonlist values(");
        for(int i=0;i<67;i++){
            query.append(values[i]+",");
        }
        query.deleteCharAt(query.lastIndexOf(","));
        query.append(");");

        sessionfactory.getCurrentSession().createSQLQuery(query.toString()).executeUpdate();
        System.out.println("Query executed");
        sessionfactory.getCurrentSession().flush();

我确信参数的数量是正确的。有人能帮我吗。谢谢

你正在以一种奇怪的、倒退的方式处理这个问题

直接的问题可能是未能转义/引用a?在其中一个输入字符串中,因此PgJDBC认为它是一个查询参数。这并不意味着你应该通过逃避/引用问号来解决问题,这表明你采取了完全错误的方法

请阅读和阅读

您使用的是Hibernate ORM,因此通常使用JPA接口或直接Hibernate接口来创建新的域对象并持久化它们。典型的方法是新建一个对象,如果使用JPA,则使用EntityManager.persist方法;如果直接使用Hibernate来持久化实体,则使用Session.save方法

如果您想改用直接JDBC,您应该创建一个JDBC PreparedStatement,设置它的参数,然后应用它。看见由于您正在加载CSV,所以通常会在JDBC批处理中执行此操作,尽管这在PostgreSQL中实际上并没有什么好处


更好的是,由于您要导入CSV,您可能只需通过PgJDBC使用PostgreSQL内置的COPY命令,就可以将更改高效地流式传输到目标表中。

您正在以一种奇怪的向后方式处理此问题

直接的问题可能是未能转义/引用a?在其中一个输入字符串中,因此PgJDBC认为它是一个查询参数。这并不意味着你应该通过逃避/引用问号来解决问题,这表明你采取了完全错误的方法

请阅读和阅读

您使用的是Hibernate ORM,因此通常使用JPA接口或直接Hibernate接口来创建新的域对象并持久化它们。典型的方法是新建一个对象,如果使用JPA,则使用EntityManager.persist方法;如果直接使用Hibernate来持久化实体,则使用Session.save方法

如果您想改用直接JDBC,您应该创建一个JDBC PreparedStatement,设置它的参数,然后应用它。看见由于您正在加载CSV,所以通常会在JDBC批处理中执行此操作,尽管这在PostgreSQL中实际上并没有什么好处


更好的是,由于您要导入CSV,您可能只需通过PgJDBC使用PostgreSQL的内置COPY命令,就可以将更改高效地流式传输到目标表中。

请阅读,然后切换到使用参数化查询语句。您不应该需要使用字符串生成器构建简单的插入查询,这样做是非常不安全的-请参阅。如果您想获得有关当前代码的任何帮助,您需要显示与该错误对应的SQL的确切文本。其中一个值[i]是问号,不是吗?@dasblinkenlight。。。可能没有正确引用。请阅读,然后切换到使用参数化查询语句。您不应该需要使用字符串生成器构建简单的插入查询,这样做是非常不安全的-请参阅。如果您想获得有关当前代码的任何帮助,您需要显示与该错误对应的SQL的确切文本。其中一个值[i]是问号,不是吗?@dasblinkenlight。。。而且可能没有被正确引用。
 org.postgresql.util.PSQLException: No value specified for parameter 1.