Hibernate:多结果集

3

根据我在Hibernate文档/在线阅读的内容,Hibernate似乎无法处理多个结果集。 我想在依赖Hibernate的应用程序中进行MySQL数据库调用,该调用将返回多个结果集。

您使用过哪些与Hibernate“相容”的解决方案,记住这可能是唯一需要返回多个结果集的调用?

谢谢!

3个回答

5
据我所知,Hibernate 无法处理多个结果集。但我认为你不需要它 - 多个结果集很少能够映射到像List<FooEntity>这样的结果。对于返回多个结果集的查询,您可以使用普通的JDBC并手动处理它们。

1
这也不可能只用普通的JDBC实现。它同样只能返回每个SELECT查询的一个结果集。 - BalusC
2
@BalusC - 这里有http://download.oracle.com/javase/6/docs/api/java/sql/Statement.html#getMoreResults%28%29 Statement.getMoreResults() - 我认为这会获取下一个结果集。 - Bozho
哦,存储过程可以返回多个结果集。虽然我从未使用过它们。 - BalusC
@BalusC - 我也从未使用过它们,但是当Hibernate无法正确处理它(来自遗留数据库)时,我了解了它们。 - Bozho
谢谢大家,JDBC看起来是一个可行的选择。我正在努力将Spring JDBC连接到一些额外的功能上。 - Ryan P.

0

我相信你已经看到了这个@Ryan,但是为了其他人(比如我)的利益:

对于Sybase或MS SQL服务器,以下规则适用:

该过程必须返回一个结果集。请注意,由于这些服务器可以返回多个结果集和更新计数,因此Hibernate将迭代结果并取第一个结果作为其返回值。其他所有内容都将被丢弃。

来自这里


0
如果结果集来自存储过程,则可以使用javax.persistence.StoredProcedureQuery类获取它们。但请确保所有结果集都由相同的列以相同的顺序组成。Hibernate中的一个错误会导致它期望所有结果集与第一个结果集具有相同的形式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接