首页 文章

storedProcedure.registerStoredProcedureParameter with out参数引用游标与Jpa Eclipse Link

提问于
浏览
1

我是Jpa的新手,我想执行程序

我有Code as Followes

private static final String PERSISTENCE_UNIT_NAME = "todos";
private static EntityManagerFactory factory;

public static void main(String[] args) {

    factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
    EntityManager em = factory.createEntityManager();

    em.getTransaction().begin();
    StoredProcedureQuery storedProcedure = em.createStoredProcedureQuery("TEST1");
    // set parameters
    storedProcedure.registerStoredProcedureParameter("P_CODE", String.class, ParameterMode.IN);
    storedProcedure.registerStoredProcedureParameter("P_DATE", String.class, ParameterMode.IN);
    storedProcedure.registerStoredProcedureParameter("P_CURSOR", ResultSet.class, ParameterMode.REF_CURSOR );
    storedProcedure.setParameter("P_CODE", "5110" );
    storedProcedure.setParameter("P_DATE", "01/01/2015" );
    // execute SP
    storedProcedure.execute();
    // get result
    Object obj =storedProcedure.getOutputParameterValue("tax");

    em.getTransaction().commit();
    em.close();

}

但这给出了注册输出参数的异常请告诉我们必须传递的内容我在线程“main”中使用Jpa EclipseLink Implimentation Exception javax.persistence.PersistenceException:Exception [EclipseLink-4002](Eclipse Persistence Services - 2.6.4 . v20160829-44060b6):org.eclipse.persistence.exceptions.DatabaseException内部异常:java.sql.SQLException:ORA-06550:第1行,第7列:PLS-00306:调用'TEST1'ORA时参数的数量或类型错误-06550:第1行第7列:PL / SQL:忽略语句错误代码:6550调用:BEGIN TEST1(P_CODE =>?,P_DATE =>?,P_CURSOR =>?);结束; bind => [3个参数绑定]查询:ResultSetMappingQuery()

1 回答

  • 1

    我认为您的Store存储过程返回列表,因此您在代码中进行了一些更改 .

    Old Code

    storedProcedure.registerStoredProcedureParameter("P_CURSOR", ResultSet.class, ParameterMode.REF_CURSOR );
    
    Object obj =storedProcedure.getOutputParameterValue("tax");
    

    New Code

    storedProcedure.registerStoredProcedureParameter("P_CURSOR",void.class,ParameterMode.REF_CURSOR);
    
    Object obj =storedProcedure.getResultList();
    

    你的所有数据存储在obj中 .

相关问题