如何将oracle.sql.Array作为oracle.jbo.domain.Array?

时间:2016-03-28 18:49:48

标签: oracle-adf

我正在实现一个PL / SQL支持的实体对象,根据Oracle文档“使用Oracle应用开发框架开发Fusion Web应用程序”第4章中的说明。

但是,与文档示例不同,我的实体对象包含一个自定义Oracle数据库集合类型的列。即,

create or replace type verp_vps_location_quantity_t as object ( location_type VARCHAR(15), location_key VARCHAR2(3), quantity NUMBER(5,0) );

create or replace type verp_vps_location_quantity_tab as table of verp_vps_location_quantity_t;

Entity Object向导为VERP_VPS_LOCATION_QUANTITY_T创建了一个Domain对象,但没有为VERP_VPS_LOCATION_QUANTITY_TAB创建。我不确定这是否重要。

该实体在JDeveloper中的Application Module tester中运行良好。但它在我重写的EntityImpl类中失败,该类调用“doSelect()”的PL / SQL处理程序。问题取决于我如何尝试从CallableStatement获取VERP_VPS_LOCATION_QUANTITY_TAB类型值。

(A)如果我试试这个:

Object array = cs.getArray(parameterPosition);

...我得到oracle.sql.Array的实例,而ADF框架期望并且需要实体行属性值为oracle.jbo.domain.Array的实例。

(B)如果我试试这个:

Map<String, Class<? extends Object>> typeMap = new HashMap<String, Class<? extends Object>>();                                                    
typeMap.put(pmd.sqlObjectTypeName, oracle.jbo.domain.Array.getORADataFactory().getClass());
Object array = cs.getObject(parameterPosition, typeMap);

...我得到IllegalAccessException

所以,基本上,我试图调用Oracle PL / SQL包并检索OUT参数作为oracle.jbo.domain.Array的实例。我该怎么做?

0 个答案:

没有答案