[英]Spring-data-jpa NativeQuery with two output params
我在spring-data-jpa中使用了oracle存储过程。 在大多数情况下,当它是函数或输出参数在参数列表中排在首位时,它会很好。 但是我有一些存储过程,输出参数是参数列表中的最后一个:
procedure get_data (some_val in varchar2 cur out sys_refcursor);
或返回多个输出引用,例如
procedure get_my_data (cur1 out sys_refcursor, cur2 out sys_refcursor, some_val in varchar2);
是否可以以任何方式在JpaRepository中使用它?
最后,我自己找到了答案:)
我的情况是使用spring-data的Custom Implementation的好时机,您应该:
注意:如果要使用默认配置,命名规则很重要
好吧,如果您想从服务或实用程序类对StoredProc进行本地化调用,则可以将Spring Jdbc用于StoredProc。 见下文实施
public class StoredProcSampleTest extends StoredProcedure {
private static final String SPROC_NAME = "HH_EXTRACT.SAMPLE_TEST";
public StoredProcSampleTest(DataSource dataSource) {
super(dataSource, SPROC_NAME);
declareParameter(new SqlParameter("v_in_msg", Types.VARCHAR));
declareParameter(new SqlOutParameter("v_out_msg", Types.VARCHAR));
compile();
}
public String execute() {
HashMap<String, Object> hmap = new HashMap<String, Object>();
hmap.put("v_in_msg", "Suresh");
hmap.put("v_out_msg", "");
Map<String, Object> results = execute(hmap);
String outRes = (String) results.get("v_out_msg");
return outRes;
}
}
现在在您的实用程序类或服务类中,执行此操作
protected StoredProcSampleTest storedProcSampleTest;
@Autowired
public void setDataSource(final DataSource dataSource) {
this.storedProcSampleTest = new StoredProcSampleTest(dataSource);
}
:
public String callStoredProcSampleTest(){
return storedProcSampleTest.execute();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.