如何使用JPA在java中获得两个游标?

如何使用JPA在java中获得两个游标?,java,oracle,jpa,stored-procedures,Java,Oracle,Jpa,Stored Procedures,我在返回两个游标时遇到问题。我的代码: StoredProcedureQuery sp = em.createStoredProcedureQuery("UORDER.GetAllItemInOrder",Item.class,Loyalty.class); sp.registerStoredProcedureParameter("i_order_id", Integer.class, ParameterMode.IN); sp.registerS

我在返回两个游标时遇到问题。我的代码:

        StoredProcedureQuery sp = em.createStoredProcedureQuery("UORDER.GetAllItemInOrder",Item.class,Loyalty.class);
        sp.registerStoredProcedureParameter("i_order_id", Integer.class, ParameterMode.IN);
        sp.registerStoredProcedureParameter("i_merchant_id", Integer.class, ParameterMode.IN);
        sp.registerStoredProcedureParameter("o_cur_line_items", Void.class, ParameterMode.REF_CURSOR);
        sp.registerStoredProcedureParameter("o_cur_loyalty", Void.class, ParameterMode.REF_CURSOR);
        sp.registerStoredProcedureParameter("o_count_item", Integer.class, ParameterMode.OUT);
        sp.registerStoredProcedureParameter("o_total_item", Integer.class, ParameterMode.OUT);
        sp.registerStoredProcedureParameter("o_data", String.class, ParameterMode.OUT);
        sp.registerStoredProcedureParameter("o_code", Integer.class, ParameterMode.OUT);
        sp.setParameter("i_order_id", orderId);
        sp.setParameter("i_merchant_id", merchantId);
        sp.execute();

        @SuppressWarnings("unchecked")
        List<Item> items = sp.getResultList();


        for(Item item : items){
            System.out.println(item);
        }

        @SuppressWarnings("unchecked")
        List<Loyalty> lstLoyalties = sp.getResultList();
        for(Loyalty loy : lstLoyalties){
            System.out.println(loy);
        }
StoredProcedureRequesty sp=em.createStoredProcedureRequesty(“UORDER.GetAllItemInOrder”、Item.class、Loyalty.class);
sp.registerStoredProcedureParameter(“i_order_id”,Integer.class,ParameterMode.IN);
sp.registerStoredProcedureParameter(“i_商户id”,Integer.class,ParameterMode.IN);
sp.registerStoredProcedureParameter(“o_cur_line_items”,Void.class,ParameterMode.REF_CURSOR);
sp.registerStoredProcedureParameter(“o_cur_忠诚度”,Void.class,ParameterMode.REF\u游标);
sp.registerStoredProcedureParameter(“o_count_item”,Integer.class,ParameterMode.OUT);
sp.registerStoredProcedureParameter(“o_total_item”,Integer.class,ParameterMode.OUT);
sp.registerStoredProcedureParameter(“o_数据”,String.class,ParameterMode.OUT);
sp.registerStoredProcedureParameter(“o_代码”,Integer.class,ParameterMode.OUT);
sp.setParameter(“i_order_id”,orderId);
sp.setParameter(“i_商户id”,merchantId);
sp.execute();
@抑制警告(“未选中”)
列表项=sp.getResultList();
用于(项目:项目){
系统输出打印项次(项);
}
@抑制警告(“未选中”)
List lstLoyalties=sp.getResultList();
对于(忠诚:1忠诚){
系统输出打印LN(loy);
}
我只得到光标项目。你能告诉我我的错误在哪里并改正吗?
谢谢大家。

存储过程的代码是什么?谢谢@Kamil 4的回复。我解决了我的问题,我丢失了忠诚的选择ID。