Jim*_*mmy 5 java oracle sqlexception
我的代码在以下行中引发了上述异常(第2行):
final ArrayDescriptor tParamArrayDescriptor = ArrayDescriptor.createDescriptor("MY_SYSTEM.T_PARAM_ARRAY", databaseHandler.getConnection());
final ARRAY oracleArray = new ARRAY(tParamArrayDescriptor, databaseHandler.getConnection(), myObjects.toArray());
Run Code Online (Sandbox Code Playgroud)
它给了我以下例外:
java.sql.SQLException: Fail to convert to internal representation:
Run Code Online (Sandbox Code Playgroud)
这myObjects是以下POJO的ArrayList:
public class MyObject
{
private String name;
private String surname;
private int age;
...
// Accessors etc..
}
Run Code Online (Sandbox Code Playgroud)
该T_PARAM_ARRAY数据库上看起来如下:
create or replace
TYPE T_PARAM_ARRAY AS OBJECT (NAME VARCHAR2(50), SURNAME VARCHAR2(50), AGE NUMBER(1));
Run Code Online (Sandbox Code Playgroud)
经过一些研究,我认为我的POJO和数据库类型之间的数据类型映射不能正确匹配.我有理由相信String匹配到VARCHAR2确定,但我认为转换int为a时存在问题NUMBER.
我尝试过使用BigDecimal,但这并没有改善这种情况.
有什么建议?
编辑:根据Oracle文档:Where intArray is an oracle.sql.ARRAY, corresponding to a VARRAY of type NUMBER. The values array contains an array of elements of type java.math.BigDecimal, because the SQL NUMBER datatype maps to Java BigDecimal by default, according to the Oracle JDBC drivers.
| 归档时间: |
|
| 查看次数: |
14954 次 |
| 最近记录: |