2011-12-30 5 views
1

DBに対して任意のSQLコマンドをプログラムで実行する方法を探しています。 (Hibernate、JPA、HSQL) CREATE TABLEのようなものでは、Query.createNativeQuery()は機能しません。Hibernate/HSQLデータベースに対して任意のSQL文をプログラムで実行するにはどうすればよいですか?

検索がたくさんあるので、私はHibernate Session.doWork()を使うことができると思いました。 推奨されないConfiguration.buildSesionFactory()を使用すると、doWorkが機能しないことがわかります。 すべてのCREATE TABLEステートメントに "use lacks privilegeまたはobject not found"が表示されます。

したがって、調停SQL文を実行するための他の方法はありますか? 基本的なJDBCステートメントの使用に関するいくつかの注意事項がありましたが、私はそれを試すためにHibernateからJDBC接続オブジェクトを取得する方法を理解していません。

hibernate.hbm2ddl.auto = create設定は、私がARRAY []カラムを持っているので私にとってはうまくいかないことに注意してください。

答えて

1

Hibernateネイティブクエリでcreate table文を実行する際に問題はないと思います。 Query.executeUpdate()を使用してください。Query.list()またはQuery.uniqueResult()ではありません。

実行できない場合は、実行時に何が起こったか教えてください。例外の完全なスタックトレースと実行中のSQLクエリに参加してください。

0

HSQLの「use use privilege or object not found」は、同じ名前のテーブルが存在するなど、何かを意味する可能性があります。 HSQLのエラーメッセージは完全に間違っています。 DatabaseMetadataを使用してテーブルをリストしてみてください。すでにテーブルを作成しているでしょう。

関連する問題