首页 > 解决方案 > 如何将 Java 类映射到 Oracle 自定义类型以用作存储过程中的 IN 参数?

问题描述

我正在尝试使用 oracledb 中的自定义对象作为过程的 IN 参数,但是从我的 java 应用程序发送它时遇到问题

我尝试将 DTO 类直接映射到 query.registerStoredProcedureParameter(1, CustomClass.class, ParameterMode.IN);

我也没有在stackoverflow中找到这个特定的问题

Java代码:

    private String executeSP(CustomClass dto) {
    StoredProcedureQuery query = em.createStoredProcedureQuery("PACKAGE.SOMEPROCEDURE");
    query.registerStoredProcedureParameter(1, CustomClass.class, ParameterMode.IN);
    query.registerStoredProcedureParameter(2, String.class, ParameterMode.OUT);

    // Pass the parameter values
    query.setParameter(1, dto);

    // Execute query
    query.execute();

    // Get output parameters
    String response = (String) query.getOutputParameterValue(2);

    System.out.println(response);
    return response;
}

PL SQL 过程:

PROCEDURE SOMEPROCEDURE (
  P_DTO                  IN     DTOTYPE (previously created)
  P_RESULT                  OUT     VARCHAR2);

预期结果:Hibernate 将 dto 映射到 oracle 自定义对象实际结果:org.hibernate.MappingException: Unknown entity

标签: javahibernatespring-bootoracle11g

解决方案


推荐阅读