我试图从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中管理输出参数的正确方法是什么? (使用注释)
我在哪里做错了?