Java hibernate createSqlQuery-日期转义分号

Java hibernate createSqlQuery-日期转义分号,java,hibernate,escaping,Java,Hibernate,Escaping,我已尝试运行以下insert本机查询 queryInsert = "INSERT INTO abc(id,date1, date2) VALUES(5,\"2014-10-20 14:31:01\",\"2014-10-20 14:31:11\");"; SQLQuery sqlQuery = session.createSQLQuery(queryInsert); sqlQuery.executeUpdate(); 我得到了以下例外: org.hibernate.exception.SQLG

我已尝试运行以下insert本机查询

queryInsert = "INSERT INTO abc(id,date1, date2) VALUES(5,\"2014-10-20 14:31:01\",\"2014-10-20 14:31:11\");";
SQLQuery sqlQuery = session.createSQLQuery(queryInsert);
sqlQuery.executeUpdate();
我得到了以下例外:

org.hibernate.exception.SQLGrammarException: could not execute statement
    at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:123) ~[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
    ....
    at java.lang.Thread.run(Thread.java:744) [na:1.7.0_45]
Caused by: java.sql.SQLException: No value specified for parameter 1
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1094) ~[mysql-connector-java-5.1.31.jar:na]
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:997) ~[mysql-connector-java-5.1.31.jar:na]
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:983) ~[mysql-connector-java-5.1.31.jar:na]
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:928) ~[mysql-connector-java-5.1.31.jar:na]
    at com.mysql.jdbc.PreparedStatement.checkAllParametersSet(PreparedStatement.java:2487) ~[mysql-connector-java-5.1.31.jar:na]
    at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2462) ~[mysql-connector-java-5.1.31.jar:na]
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2311) ~[mysql-connector-java-5.1.31.jar:na]
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2262) ~[mysql-connector-java-5.1.31.jar:na]
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2246) ~[mysql-connector-java-5.1.31.jar:na]
    at com.jolbox.bonecp.PreparedStatementHandle.executeUpdate(PreparedStatementHandle.java:205) ~[bonecp-0.8.0.RELEASE.jar:na]
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:187) ~[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
    ... 29 common frames omitted
问题是hibernate将日期字符串中的冒号:作为查询参数。我该怎么做才能使其不被视为查询参数?我试过用\:,和::,逃跑,但都没用

非常感谢

更新:


谢谢你的回复,很遗憾,我不能对我的案例进行参数化查询。它实际上更像是一个包含INSERT INTO语句的转储文件,所以拆分它们并创建参数化查询只会增加开销,所以我只想运行这些INSERT INTO查询语句。

我想知道您的date1和date2是否是字符串?如果没有,请给出日期参数。

您可以通过参数设置值,因此该值不会被解释为控制代码!你可以找到一个很好的解释


我刚刚从postgres数据库导出了一些数据,要求它创建insert语句

垃圾堆看起来像

INSERT INTO scenario_collection (id, date_collected, file_name, scenarioid) VALUES (137, '2014-10-16 14:47:00', '20141016134500-eland.log', 11);

因此,尝试使用单引号

使用参数和setParameter@ScaryWombat我已经更新了我的帖子。谢谢
INSERT INTO scenario_collection (id, date_collected, file_name, scenarioid) VALUES (137, '2014-10-16 14:47:00', '20141016134500-eland.log', 11);