java 和 jboss,带有 SQL 服务器。使用实体管理器在 native 查询中插入多个语句,不起作用;但确实在 sql 中工作

标签 java sql sql-server jboss entitymanager

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/

相关文章:

JavaFX.登录页面链接到下一页

java - 使用 Java 1.6 中的 Swing 库构建简单的 GUI

java - 我可以为我的网站之一使用 C3PO/DBCP 连接池吗

PHP While 循环中的 While 循环

sql-server - 枢轴后的求和列情况 ()

sql - 如何获取格式为 MM/DD/YYYY 的最新日期顺序

java - 如何在java中动态创建一个类

mysql - SQL 更新 - 字符串拆分

mysql - 仅在值不在表 B 中的情况下连接表

sql-server - SSIS 顺序处理