Java Hibernate insert SQL语句不工作

Java Hibernate insert SQL语句不工作,java,mysql,hibernate,Java,Mysql,Hibernate,我正在尝试执行hibernate插入sql查询 String sqlQuery = "insert into examschedule (class_id,examtype_id,subject_id,examdate,start_time,end_time,messagetype_id,createddate) values"; String sql1 =sql1+ "("+ classes.getId()+","+ exType.

我正在尝试执行hibernate插入sql查询

String sqlQuery = "insert into examschedule (class_id,examtype_id,subject_id,examdate,start_time,end_time,messagetype_id,createddate) values";
   String sql1 =sql1+ "("+ classes.getId()+","+
                            exType.getId()+","+
                            subjectName.getId()+","+
                            "'"+sqlDate+"'"+","+"'"+startTime+"'"+","+"'"+endTime+"'"+","+msgType.getId()+","+"'"+sqlTimestamp+"'"+");";

 System.out.println(sqlQuery+sql1);
                query = session.createSQLQuery(sqlQuery);
                int result = query.executeUpdate();
但是,当我尝试在mysql控制台中执行同一个查询时,我遇到了以下异常:它的执行是完美的,没有语法错误

为什么在我调用查询对象上的createSQLQuery()时会删除该值参数

18:20:16,855 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) insert into examschedule (class_id,examtype_id,subject_id,examdate,start_time,end_time,messagetype_id,createddate) values(13,1,5,'2015-09-07','11AM','12PM',2,'2015-09-12 18:20:16.855');
18:20:16,868 INFO  [stdout] (http-localhost-127.0.0.1-8080-2) Hibernate: insert into examschedule (class_id,examtype_id,subject_id,examdate,start_time,end_time,messagetype_id,createddate) values

18:20:16,871 WARN  [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (http-localhost-127.0.0.1-8080-2) SQL Error: 1064, SQLState: 42000
18:20:16,871 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (http-localhost-127.0.0.1-8080-2) 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 '' at line 1
18:20:16,876 ERROR [stderr] (http-localhost-127.0.0.1-8080-2) org.hibernate.exception.SQLGrammarException: could not execute statement

我在评论中提到的代码中有一些错误:

String sqlQuery = "insert into examschedule (class_id,examtype_id,subject_id,examdate,start_time,end_time,messagetype_id,createddate) values";
   String sql1 =sql1+ "("+ classes.getId()+","+
               //^^ here you are adding undefined value remove it
                            exType.getId()+","+
                            subjectName.getId()+","+
                            "'"+sqlDate+"'"+","+"'"+startTime+"'"+","+"'"+endTime+"'"+","+msgType.getId()+","+"'"+sqlTimestamp+"'"+");";

 System.out.println(sqlQuery+sql1); //complete query is in sqlQuery+sql1
 query = session.createSQLQuery(sqlQuery); //here you are passing half query use sqlQuery+sql1
 int result = query.executeUpdate();
请考虑并尝试以下代码段:

String sqlQuery = "insert into examschedule (class_id,examtype_id,subject_id,examdate,start_time,end_time,messagetype_id,createddate) values";
   sqlQuery = sqlQuery + "("+ classes.getId()+","+
                            exType.getId()+","+
                            subjectName.getId()+","+
                            "'"+sqlDate+"'"+","+"'"+startTime+"'"+","+"'"+endTime+"'"+","+msgType.getId()+","+"'"+sqlTimestamp+"'"+");";

 System.out.println(sqlQuery);
 query = session.createSQLQuery(sqlQuery);
 int result = query.executeUpdate();
调试代码片段时,请不要使用
SO
。阅读


您可以尝试直接在数据库中执行sql语句。它将为您提供任何查询错误。问题可能类似于在表名之前添加架构名。

如果您只想通过连接字符串来构建查询,为什么还要使用hibernate呢?谢谢,它工作了,但我不明白我到底犯了什么错误。您的错误是在查询中传递
sqlQuery
,而不是
sqlQuery+sql1