2
String myQuery1  = "insert into mytable(mycol) values(myval) \ngo";
String myQuery2  = "insert into mytable(mycol) values(myval2) \ngo";
String myQuery = myQuery1 + myQuery2;

Query query = myEntityManager.createNativeQuery(myQuery);
List<?> insertResultList = queryInsertDefaults.getResultList();

eclpiseデバッガーを使用すると、使用されている文字列を確認できます。SQLServer Management Studioにコピーして貼り付けると正常に機能します。したがって、複数行のステートメントが気に入らないエンティティマネージャーと関係があると思います... ?

ありがたいことにアドバイスを受け取りました(ええ、stringbuilderなどについて知っています)。私が得るエラーは次のとおりです。

 SQL Error: 102, SQLState: S0001
 Incorrect syntax near 'go'.

EDIT は、挿入がentitymanagerおよびqueryクラスでサポートされていないことが判明しました。したがって、プリペアドステートメントを使用するか、オブジェクトを永続化する必要があります。

4

1 に答える 1

2

MSSQL ドキュメントから: 「GO は Transact-SQL ステートメントではありません。これは、sqlcmd および osql ユーティリティと SQL Server Management Studio コード エディターによって認識されるコマンドです。」

そのため、SSMS では機能しますが、データベースに「直接」送信された場合は機能しません。INSERT ステートメントから完全に削除してください。

于 2010-09-28T13:03:50.103 に答える