我正在尝试调用Oracle存储过程
create or replace
procedure save_item (
item_arr__p in complex_list__t,
status__p out varchar2,
status_message__p out varchar2) is
...
begin
...
end
complex_list__t类型定义如下:
create or replace
type complex_list__t is table of simple_list__t
simple_list__t类型定义如下:
create or replace
type simple_list__t is table of varchar2(2000)
我想使用JPA 2调用此过程。我不确定JPA是否支持数组作为参数。 我希望能够做到这一点:
StoredProcedureQuery query = em.createNamedStoredProcedureQuery("pkg_api_wd_item.save_item");
query.registerStoredProcedureParameter("item_arr__p", MyComplexObject[].class, ParameterMode.IN);
query.registerStoredProcedureParameter("status__p", String.class, ParameterMode.OUT);
query.registerStoredProcedureParameter("status_message__p", String.class, ParameterMode.OUT);
query.setParameter("item_arr__p", myobjects);
query.execute();
String status = (String) query.getOutputParameterValue("status__p");
String message = (String) query.getOutputParameterValue("status_message__p");
我真的想使用JPA,因为我希望我的应用程序是不可知的(没有oracle依赖项)。
如果JPA不支持,我可以使用CLOB参数代替我的数组吗?
答案 0 :(得分:0)
您可以尝试传递
List<MyComplexObject>
而不是它们的数组。如果这不起作用,您可以尝试
List<List<String>>
而不是其中之一。