Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更新时出现Hibernate错误:无法执行语句,使用正确的语法接近';指数=1';_Java_Mysql_Sql_Hibernate_Orm - Fatal编程技术网

Java 更新时出现Hibernate错误:无法执行语句,使用正确的语法接近';指数=1';

Java 更新时出现Hibernate错误:无法执行语句,使用正确的语法接近';指数=1';,java,mysql,sql,hibernate,orm,Java,Mysql,Sql,Hibernate,Orm,我正在使用带有Hibernate和MySQL的netbeans开发一个桌面应用程序。当我向数据库添加新记录时,它完全正常工作,但当我尝试更新对象字段时,出现以下错误: could not execute statement INFO: HHH000010: On release of batch it still contained JDBC statements Jan 17, 2015 2:47:00 PM org.hibernate.engine.jdbc.spi.SqlExcept

我正在使用带有Hibernate和MySQL的netbeans开发一个桌面应用程序。当我向数据库添加新记录时,它完全正常工作,但当我尝试更新对象字段时,出现以下错误:

could not execute statement
INFO: HHH000010: On release of batch it still contained JDBC statements
Jan 17, 2015 2:47:00 PM    org.hibernate.engine.jdbc.spi.SqlExceptionHelper$StandardWarningHandler logWarning
WARN: SQL Warning Code: 1064, SQLState: 42000
Jan 17, 2015 2:47:00 PM    org.hibernate.engine.jdbc.spi.SqlExceptionHelper$StandardWarningHandler  logWarning
WARN: You have an error in your SQL syntax; check the manual that   corresponds to your MySQL server version for the right syntax to use near 'index=1' at line 1
Java代码:

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         

    Session session = null;


    try {
        session = HibernateUtil.getSessionFactory().openSession();
        session.beginTransaction();

        Student student = (Student) session.get(Student.class, new Integer(1));
        student.setMark(0);
        System.out.println(student.getIndex()+" "+student.getName()+" "+student.getMark());

        session.saveOrUpdate(student);
        session.getTransaction().commit();
        session.close();

    } catch (Exception e) {
        System.out.println(e.getMessage());
    } 

}       
hibernate.cfg.xml:

<hibernate-configuration>
   <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/studentsdb?zeroDateTimeBehavior=convertToNull</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.hbm2ddl.auto">update</property>
    <mapping resource="entity/Student.hbm.xml"/>
  </session-factory>
</hibernate-configuration>

org.hibernate.dialogue.mysqlinnodbdialogue
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/studentsdb?zeroDateTimeBehavior=convertToNull
根
更新
Hibernate映射xml:

<hibernate-mapping>
<class name="entity.Student" table="student" catalog="studentsdb">
    <id name="index" type="java.lang.Integer">
        <column name="index" />
        <generator class="identity" />
    </id>
    <property name="name" type="string">
        <column name="name" length="20" not-null="true" />
    </property>
    <property name="surname" type="string">
        <column name="surname" length="20" not-null="true" />
    </property>
    <property name="mark" type="double">
        <column name="mark" precision="22" scale="0" not-null="true" />
    </property>
</class>
</hibernate-mapping>

在MySQL和大多数其他关系数据库系统中


您需要将标识符重命名为
id

是否可以启用hibernate生成的实际sql语句的日志记录。请参见“是”,问题出在id列名“index”中。我把它改成“id”后它就开始工作了。