在spring 5上使用注释使用一个输出参数调用oracle过程时出错

时间:2019-04-04 15:04:30

标签: java spring jpa plsql persistence

我试图从Spring应用程序的存储库中调用oracle过程。 该过程有两个参数,一个输入参数和一个输出参数。

我收到以下异常:

org.springframework.dao.InvalidDataAccessResourceUsageException: Error calling CallableStatement.getMoreResults; SQL [import_test]; nested exception is org.hibernate.exception.SQLGrammarException: Error calling CallableStatement.getMoreResults

在日志中,我还阅读:

PLS-00306: numero o tipi di argomenti errati nella chiamata di 'IMPORT_TEST'

此处是过程标头:

create or replace PROCEDURE IMPORT_TEST (step IN VARCHAR2, esito OUT VARCHAR2)

实体:

@NamedStoredProcedureQueries({

    @NamedStoredProcedureQuery(name = "import_test", procedureName = "import_test",
            parameters = {@StoredProcedureParameter(mode = ParameterMode.IN, name = "step", type = String.class),
                    @StoredProcedureParameter(mode = ParameterMode.OUT, name = "esito", type = String.class) }) })
@Entity
public class StoredProcedureImportTest implements java.io.Serializable {

    /** The Constant serialVersionUID. */
    private static final long serialVersionUID = 2363789532097967637L;

    /** The esito. */
    private String            esito;

    /**
     * Gets the esito.
     *
     * @return the esito
     */
    @Id
    public String getEsito() {
        return this.esito;
    }

    /**
     * Sets the esito.
     *
     * @param esito
     *            the new esito
     */
    public void setEsito(String esito) {
        this.esito = esito;
    }

}

存储库:

public interface StoredProcedureImportTestRepository extends BaseRepository<StoredProcedureTest, Long> {

    /**
     * Sp import class standart.
     *
     * @param step
     *            the step
     * @return the string
     */
    @Procedure(name = "import_test")
    String importTest(@Param("step") String step); 

}

我在Service内部调用该过程

String esito = storedProcedureImportTestRepository.importTest(step);

这里的问题似乎是输出参数,仅使用输入参数就可以正常工作。

所以问题是,在spring-jpa中管理输出参数的正确方法是什么? (使用注释)

我在哪里做错了?

0 个答案:

没有答案