2

私は非常に典型的な問題を抱えています。このように動的に生成されたクエリ...

UPDATE Templates t SET t.TEMPLATE_DATA =  replace(t.TEMPLATE_DATA, 'Test\'s Test', 'Kent"s Test'), t.TEMPLATE_DATA =  replace(t.TEMPLATE_DATA, 'Test"s Test', 'Kent"s Test'), UPDATE_DATE = NOW() where PRACTICE_ID = 1 AND CATEGORY_ID IN (1)

これは、dbでこのクエリを明示的に実行するときに完璧に機能します。ただし、エラーQueryTranslatorExceptionが発生した場合は、hibernateのsession.createQuery(-my query-)を使用します。

Database : Mysql 5.3

この問題に直面した人はいますか?前もって感謝します。

4

2 に答える 2

3

これをHibernateでネイティブSQLクエリとして実行してみてください。

session.createSQLQuery(-- query text --);

使用する場合

session.createQuery(-- query text --);

Hibernateは、通常のSQLクエリとは異なるHQLクエリとして実行しようとします。

HQLはオブジェクト指向のクエリ言語です。これは、テーブルではなくオブジェクトの観点から動作します。ここにSQLとHQLの違いの簡単な説明を投稿しました。ただし、 HQLネイティブSQLの使用法に関するhibernateのドキュメントの適切なセクションを読む時間があれば。

于 2012-08-13T06:57:16.827 に答える
2

Hibernateで実行する場合は、次SQL Queryを使用します:session.createSQLQuery(String query);

于 2012-08-13T06:56:26.587 に答える