java - Hibernate native sql查询异常 - rs游标仅向前

标签 java hibernate hibernate-native-query

我正在处理“不可更改”的遗留代码(无法移动到标准 api),并且在正确的参数绑定(bind)方面遇到了一些麻烦。查询如下所示 (MS SQL):

SELECT BRAND AS b FROM CAR WHERE (NAME LIKE :phrase OR MODEL LIKE :phrase ) AND AGE NOT IN(1997, 1998) AND (:mileage IS NULL OR MILEAGE LIKE :mileage) ORDER BY BRAND
(...)
    query.setParameter("phrase", "%" + phrase + "%");
    query.setParameter("mileage", mileage);

phrase 实际上是必需的,但由于 mileage 参数是可选的,因此它以上面介绍的奇怪方式完成。 问题是,在提供了 phrasemileage 的情况下,它一直给我以下错误:java.sql.SQLException:ResultSet 只能以正向访问。。它可以在没有提供mileage参数的情况下工作。为什么我会收到此错误?

编辑:

  • 在数据库上运行此查询没有结果。
  • 我正在使用 query.setResultTransformer(Transformers.aliasToBean(type)) 以及在我的 SQLQuery 查询 对象上设置 firstmax 结果。
  • 调用 query.list() 时出错(使用 intellij 评估表达式)

query.list() 不应该返回空结果吗?

可能的答案(在这种情况下):

看起来在查询上设置 FirstResult 会导致该问题,因为 - 错误地 - 它是一个负数。

最佳答案

您如何执行 SQL 然后访问结果?

听起来使用 mileage 参数执行 SQL 时没有结果,但您无论如何都在尝试读取结果。

尝试立即在数据库上运行生成的 SQL,看看它是否返回任何行。

关于java - Hibernate native sql查询异常 - rs游标仅向前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48590135/

相关文章:

java - 计算并行程序的运行时间和cpu时间

java - 在使用 Hibernate 4 时, `org.hibernate.cache.EhCacheProvider` 需要什么依赖项?

java - 无法清除 hibernate 缓存

java - 查询总是返回 0 行

java - Spring boot - 如何使用异常处理程序处理页面未找到异常

java - 如何在 Play-With-Docker-Lab 中指定 java 的文件夹路径?

java - JPA 和 JSON 运算符 native 查询

java - Hibernate Neo4j 以键值形式检索结果

java - 如何独立于 Spring 上下文使用 @Autowired 和 @Value 注释?

java - hibernate 性能问题,坚持一个接一个还是批量?