Hibernate本机sql查询异常 - 只有rs游标转发

时间:2018-02-02 20:06:12

标签: java hibernate hibernate-native-query

我正在处理一个不可更改的遗留代码' (无法移动到标准api)我有一些适当的参数绑定的麻烦。查询看起来像这样(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 may only be accessed in a forward direction.。它可以提供mileage参数。为什么我收到此错误?

编辑:

  • 在db上运行此查询不会给我带来任何结果。
  • 我正在使用query.setResultTransformer(Transformers.aliasToBean(type))以及在first对象上设置maxSQLQuery query结果。
  • 调用query.list()(使用intellij evaluate expression
  • 时出错

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

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

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

1 个答案:

答案 0 :(得分:0)

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

听起来使用mileage参数执行SQL时没有结果,而且无论如何你都试图读取结果。

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