gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 09:53:24 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com