Comment puis-je éviter cette exception? java.sql.SQLException: ne parviennent pas à convertir à la représentation interne:

Mon code est en train de jeter l'exception ci-dessus sur la ligne suivante (ligne 2) :

final ArrayDescriptor tParamArrayDescriptor = ArrayDescriptor.createDescriptor("MY_SYSTEM.T_PARAM_ARRAY", databaseHandler.getConnection());
final ARRAY oracleArray = new ARRAY(tParamArrayDescriptor, databaseHandler.getConnection(), myObjects.toArray());

Sa me donne l'exception suivante :

java.sql.SQLException: Fail to convert to internal representation: 

La myObjects est une liste de tableaux de la suite de POJO:

public class MyObject
{
    private String name;
    private String surname;

    private int age;

    ...

    //Accessors etc..

}

La T_PARAM_ARRAY sur la base de données se présente comme suit :

create or replace
TYPE               T_PARAM_ARRAY AS OBJECT (NAME VARCHAR2(50), SURNAME VARCHAR2(50), AGE NUMBER(1));

Après quelques recherches, je crois que le type de données correspondance entre ma POJO et le type de base de données ne correspondent pas correctement. Je suis raisonnablement confiant que la Chaîne est de contrepartie sur VARCHAR2 ok, mais je pense qu'il y a un problème de conversion de la int à un NUMBER.

J'ai essayé d'utiliser BigDecimal, mais qui n'a pas amélioré la situation.

Des suggestions?

EDIT: Selon le Documentation 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.

OriginalL'auteur Jimmy | 2010-11-24