0

Hibernate を使用してファイルからネイティブ SQL を実行したいと考えています。SQL には、データベース構造を作成する複数のステートメントを含めることができます (つまり、テーブル、制約、ただし挿入/更新/削除ステートメントは含まれません)。

例、非常に単純なクエリを以下に示します (次の 2 つの SQL ステートメントが含まれています)。

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

MySQL db を使用しています。上記のクエリを実行すると、構文エラーが返されます。それらを1つずつ実行すると、問題ありません。

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

他の人が説明しているように
、これらのクエリを1つずつ実行する必要があります。
Hibernateコードは、JDBCで1つの更新ステートメントを実行するように変換されます。
しかし、2つの更新ステートメントを提供しました。
さらに、
私は個人的に、一部のDBスクリプトで、Javaアプリケーションの外部にテーブルを作成するコードを使用することを好みます。

于 2013-03-09T16:30:44.320 に答える
0

メソッド createSQLQuery のパラメーターは t-sql コードです。t-sql コードが mysql インターフェイス アナライザーで正しく動作することを確認します。SQL を変更してみることができます:'CREATE TABLE testtbl(id int(5));' ところで、JDBC 接続 API を使用することができます (そうすることはお勧めしません)。

于 2013-03-11T09:15:57.450 に答える