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 management studio 时它工作正常 - 所以我猜这与不喜欢多行语句的实体管理器有关/去...?
感谢收到的任何建议(是的,我知道 stringbuilder 等等),我得到的错误是:
SQL Error: 102, SQLState: S0001
Incorrect syntax near 'go'.
编辑 结果实体管理器和查询类不支持插入。所以我必须使用准备好的语句或保留对象。
最佳答案
来自 MSSQL 文档:“GO 不是 Transact-SQL 语句;它是 sqlcmd 和 osql 实用程序以及 SQL Server Management Studio 代码编辑器识别的命令。”
这就是为什么它在 SSMS 中有效,但在“直接”发送到数据库时却无效。只需将其从您的 INSERT 语句中完全删除即可。
关于java 和 jboss,带有 SQL 服务器。使用实体管理器在 native 查询中插入多个语句,不起作用;但确实在 sql 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3812529/