我想使用 Hibernate 从文件运行 native SQL。 SQL 可以包含多个创建数据库结构的语句(即表、约束,但没有插入/更新/删除语句)。
例如,下面是一个非常简单的查询(包含以下两条SQL语句)
CREATE DATABASE test;
CREATE TABLE test.testtbl( id int(5));
我正在使用 MySQL 数据库,当我运行上述查询时,我返回了语法错误。当我一一运行它们时,就可以了。
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:
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
'CREATE TABLE test.testtbl( id int(5))' at line 1
运行查询的代码如下(以上语句分配给“sql”变量):
session = sf.openSession();
session.beginTransaction();
Query qry = session.createSQLQuery(sql);
qry.executeUpdate();
session.getTransaction().commit();
如有任何帮助,我们将不胜感激。
最佳答案
正如其他人所解释的
您必须一一运行这些查询。
Hibernate 代码被转换为在 JDBC 上运行一个更新语句。
但您提供了两个更新声明。
另外,
我个人更喜欢在 Java 应用程序之外的某些数据库脚本中使用创建表的代码。
关于java - Hibernate 多个原生 SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15312697/