gpt4 book ai didi

java - 无法为指定的 SELECT 语句定义 SENSITIVE 游标 "SQL_CURSH200C1"。 SQLCODE=-243,SQLSTATE=36001,DRIVER=4.13.127

转载 作者:太空宇宙 更新时间:2023-11-04 07:50:15 26 4
gpt4 key购买 nike

对于像这样简单的查询,DB2 在 Hibernate 中使用时会无缘无故地抛出 SQL 错误。

我认为我的 DB2 hibernate 属性的所有设置都是正确的,因为其他一些查询运行良好。

    SQLException for SQL [/* criteria query */ 

select this_.col1,this_.col2,this2_.col1,this2_.col3
from TABLE this_
left outer join TABLE1 this2_
on this_.TAB1_ID=this2_.ID
where this2_.ID=?

]; SQL state [36001]; error code [-243]; could not execute query using scroll; nested exception is org.hibernate.exception.GenericJDBCException: could not execute query using scroll

我尝试在 IBM 网站上查找,它根本没有帮助,因为相同的测试用例在 hsqldb 上运行良好。

注意:Hibernate 为我生成查询,但我没有生成查询。

任何帮助将不胜感激。

谢谢斯里达尔。

最佳答案

DB2 引入了一种称为“敏感游标”的游标,它应该能够看到游标打开后对数据所做的(某些)更改。替代方案是“不敏感”和“不敏感”游标类型。

如果查询返回只读结果集,这意味着敏感游标将无法看到数据更改,因为它的结果集与实际数据分离。 DB2 返回错误 -243 以表明它无法满足请求的“敏感”行为。

由于您的查询包含联接,因此它返回只读结果集,因此您会收到错误。

如果您不需要这样的敏感性(例如,您不打算更新数据),您可以尝试将 JDBC 属性cursorSensitivity 设置为 TYPE_SCROLL_ASENSITIVE(即值为 2 的 int)。该参数可以在 JDBC URL 字符串中编码,如下所示:

jdbc:db2://hostname:port/dbname:cursorSensitivity=2;

请参阅此处了解详细信息(或者更好 - 请参阅您实际的 DB2 版本的相应页面):

关于java - 无法为指定的 SELECT 语句定义 SENSITIVE 游标 "SQL_CURSH200C1"。 SQLCODE=-243,SQLSTATE=36001,DRIVER=4.13.127,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14610577/

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