java - Hibernate 多个原生 SQL 语句

标签 java mysql hibernate

我想使用 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/

相关文章:

mysql - 如何为特定时区的用户进行 mysql SELECT

javax.validation.NotBlank 缺少 validator

java - 两个用户之间交换屏幕

java - pom.xml 中的依赖类型

php - MYSQL如何在标签之间搜索特定的词

java - 在 Eclipse 中使用 Ant 的类路径

mysql - 从每日数据中选择该月的平均值(每日总和/天数)

hibernate - 缓存条目未使用

java - 如何使缓冲读取器从头开始读取而不是使用另一个对象

java - 如何在java中将4字节数组转换为 float