如何保持从休眠过程中获得的多个结果

时间:2014-10-30 17:54:22

标签: java sql-server hibernate stored-procedures mssql-jdbc

我是Hibernate的新手 这里我的问题是我知道如何使用hibernate调用mssql的存储过程,所以这里我使用了本机查询,我称之为

@NamedNativeQueries({
@NamedNativeQuery(
name = "callProc",
query = "EXEC SimpleProc :var,:var1,:var2,
resultClass = resultbean.class
)})

这里我有一个名为let strong > MultiResultProc 的程序

Create Procedure MultiResultProc
.....
begin
select * from resulttable1;
select * from resulttable2;
select * from resulttable3;
end

那么如何选择这些多结果类,当我在某些地方谷歌时,我发现Hibernate不会处理Sybase和MSSQL db的多个结果集。 但是我需要那种类型的工作......在这里,我的项目有多种程序,我们不能再设计了 **所以请帮助我**

2 个答案:

答案 0 :(得分:0)

在Hibernate中执行存储过程时应该注意什么?

  • 如果您的存储过程中有单InsertUpdateDelete个操作,那么您必须beginTransactin()commit()才能生效
  • Hibernate只会选择存储过程的第一个结果。例如:如果你编写了两个select语句,那么在bean和没有bean的情况下,第一个结果将被映射为hibernate,它只会返回第一个结果作为对象列表。

答案是不,你不能在hibernate中获取所有三个表记录。

答案 1 :(得分:0)

我认为在hibernate中使用cursors时需要使用stored procedure。 这是你应该做的。

  • 打开select * from table1
  • 的光标
  • select * from table2加入现有游标。
  • 同样从表n中选择并与现有结果集游标连接。
  • 将返回的游标从hibernate映射到适当的类,该类将包含从所有表返回的所有字段。
  • 根据您的需要从课堂上填写结果。

这将节省大量的时间和人力。有关精确示例,请访问this链接。