Java и Jboss, с сервером SQL. Несколько операторов вставки в собственный запрос с использованием entitymanager, не работает; но работает в sql - PullRequest
2 голосов
/ 28 сентября 2010
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 Я вижу используемую строку, она отлично работает, когда я копирую и вставляю в SQL Server Studio Studio - так что я предполагаю, что есть что-то связанное с менеджером сущностей, которому не нравятся многострочныезаявления / идти ...?

Любой совет с благодарностью получен (да, я знаю о строителе строк и т. д.), и я получаю ошибку:

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

РЕДАКТИРОВАТЬ Оказывается, вставка не поддерживается entitymanager и классом запросов.Поэтому я должен использовать либо готовое утверждение, либо сохранить объект.

1 Ответ

2 голосов
/ 28 сентября 2010

Из документации MSSQL: «GO - это не оператор Transact-SQL; это команда, распознаваемая утилитами sqlcmd и osql и редактором кода SQL Server Management Studio».

Именно поэтому он работает в SSMS, но не при отправке «напрямую» в базу данных. Просто полностью удалите его из операторов INSERT.

...