2010-05-05 13 views
0

Je souhaite insérer une valeur CLOB dans ma base de données Oracle et voici ce que je pourrais faire. J'ai reçu cette exception lors de l'insertion de l'opération "ORA-01461: peut lier une valeur LONG uniquement pour insérer dans une colonne LONG". Est-ce que quelqu'un pourrait me dire ce que je devrais faire? Merci.Problème d'insertion de clous d'oracle au printemps

List<Object> listObjects = dao.selectAll("TABLE NAME", new XRowMapper()); 
String queryX = "INSERT INTO X (A,B,C,D,E,F) VALUES (?,?,?,?,?,XMLTYPE(?))"; 
OracleLobHandler lobHandler = new OracleLobHandler(); 
for(Object myObject : listObjects) { 
    dao.create(queryX, new Object[]{ 
    ((X)myObject).getA(), 
    ((X)myObject).getB(), 
    new SqlLobValue (((X)myObject).getC(), lobHandler), 
    ((X)myObject).getD(), 
    ((X)myObject).getE(), 
    ((X)myObject).getF() 
    }, 
    new int[] {Types.VARCHAR,Types.VARCHAR,Types.CLOB,Types.VARCHAR,Types.VARCHAR,Types.VARCHAR}); 
} 

Répondre

0

Vos paramètres sont-ils dans le bon ordre? C'est comme si l'instruction SQL avait le LOB comme sixième paramètre, mais que vous définissiez le LOB comme le troisième paramètre.

En outre, je supposeà getF() tous retournent des valeurs de chaîne?

+0

oui tous les getters retournent des valeurs de 'String' et dans ma base de données' la colonne C' a un type de données 'CLOB' et' colum F' a un 'XMLTYPE'. Par conséquent, je suppose que les paramètres sont dans le bon ordre. – haluk

0

La première chose que je ferais est d'éliminer soit la colonne C ou F de votre insertion pour déterminer celui qui cause l'erreur.