使用具有多个结果JPA的存储过程

时间:2015-07-22 08:34:12

标签: java sql sql-server jpa

我在SQL Server中有两个表:

表A

ID Num
11 tj55
4  tj40

表B

ID NUM A_ID
3 se400 4
5 se500 4

我有一个存储过程,它将返回B中所有相应行中的每一行,我有这个结果

NumA NumB
tj40 se400
tj40 se500

代码:

ALTER PROCEDURE [dbo].[Proc] 
    @param nvarchar(MAX),
AS
BEGIN
    SELECT 
        aa.Num,
        bb.Num
    FROM 
        [dbo].[A]  as aa
    INNER JOIN 
        [dbo].[B] AS bb ON bb.A_ID = aa.ID 
    WHERE 
        aa.Num = @param
    ORDER BY 
        aa.Num
 END

我想在我的Java应用程序中使用JPA调用我的StoredProcedure来生成两行(我的目标是让List包含所有NumB(在本例中为'se400'和'se500')

StoredProcedureQuery query2 = em.createStoredProcedureQuery("Proc");
query2.registerStoredProcedureParameter("param", String.class,ParameterMode.IN);;
query2.setParameter("param", "tj40");

query2.execute();   

List<Object> res = query2.getResultList();
for (int i=0; i<res.size(); i++){
System.out.println(res.get(i).toString());
}

它找到了两行,但它返回

[Ljava.lang.Object;@94814
[Ljava.lang.Object;@00856
你能帮帮我吗? 非常感谢你

1 个答案:

答案 0 :(得分:0)

在我的应用程序中,我使用以下方式

List i1 = query2.getResultList();
while(i1.hasNext()){

    Object[] object =(Object[]) i1.next();
//your rest code
//object[0] will contain numA and object[1] will contain numB
}