0

我想使用 Hibernate 从文件运行本机 SQL。SQL 可以包含多个创建数据库结构的语句(即表、约束但没有插入/更新/删除语句)。

示例,下面是非常简单的查询(其中包含以下两条 SQL 语句)

CREATE DATABASE test;
CREATE TABLE test.testtbl( id int(5));

我正在使用 MySQL db,当我运行上述查询时,我返回 gettng 语法错误。当我一个一个运行它们时,没关系。

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();

任何帮助,将不胜感激。

4

2 回答 2

1

正如其他人所解释的那样
,您必须一一运行这些查询。
休眠代码被翻译成在 JDBC 上运行一条更新语句。
但是您提供了两个更新声明。
此外,
我个人更喜欢在一些 DB 脚本中使用在 Java 应用程序之外创建表的代码。

于 2013-03-09T16:30:44.320 回答
0

createSQLQuery方法的参数是t-sql代码;t-sql 代码确保在mysql 接口分析器中正确。您可以尝试更改 sql :'CREATE TABLE testtbl(id int(5));' 顺便说一下可以使用JDBC Connection api(不推荐这样做) 如:java.sql.Connection conn=session.connection();

于 2013-03-11T09:15:57.450 回答