java - storeedProcedure.registerStoredProcedureParameter,带 out Parameter ref 光标,带 Jpa Eclipse Link

标签 java hibernate jpa orm eclipselink

我是 Jpa 新手,我想执行过程

我的代码如下

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();

}

但这给出了注册输出参数的异常请告诉我们必须传递什么 我正在使用 Jpa EclipseLink 实现 线程“main”中的异常javax.persistence.PersistenceException:异常[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 => [绑定(bind)3个参数]查询:ResultSetMappingQuery()

最佳答案

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

旧代码

 storedProcedure.registerStoredProcedureParameter("P_CURSOR", ResultSet.class, ParameterMode.REF_CURSOR );

Object obj =storedProcedure.getOutputParameterValue("tax");

新代码

    storedProcedure.registerStoredProcedureParameter("P_CURSOR",void.class,ParameterMode.REF_CURSOR);

Object obj =storedProcedure.getResultList();

您的所有数据都存储在 obj 中。

关于java - storeedProcedure.registerStoredProcedureParameter,带 out Parameter ref 光标,带 Jpa Eclipse Link,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43133604/

相关文章:

java - Spring Boot 应用程序不会为 JPA @Table 注释创建模式

java - JCheckBox不触发isselect

java - 如何通过复合对象属性查找?

java - 为什么 FetchType.Eager 会阻止双向映射中的 org.hibernate.TransientObjectException 而 CascadeType.ALL 却没有效果?

java - jpql和hibernate年龄差异

java - 日历的 hibernate @CreationTimestamp @UpdateTimestamp

java - 如何将字符串变量添加到 jdbc firebird 连接上的 SQL 查询

Java - 获取无边框窗口位置

Java 连接问题

java - 如何使用 Hibernate 获取关联的实体