Me he encontrado con el siguiente problema, que parece ser uno prettycommon. La excepción es Cannot update entity: [...] nested exception is java.sql.BatchUpdateException: ORA-24816: Expanded non LONG bind data supplied after actual LONG or LOB column
. Parece que a Oracle no le gusta vincular valores grandes (> 4000 caracteres) a parámetros después de un LOB o CLOB. ¿Alguien ha resuelto este problema?Extraño error de Oracle con Hibernate y CLOB
Respuesta
Esto es: ORA-24816
** Es una limitación, y las variables de vinculación LARGAS deben ser las últimas en una declaración. **
fuente: http://www.odi.ch/weblog/posting.php?posting=496
Solución: Al renombrar los campos del modelo de hibernación para que la columna CLOB tiene un nombre que viene después que la columna de varchar2 al ordenar alfabéticamente (que prefija el campo CLOB en el clase java con una 'z'), todo funciona bien porque el parámetro clob viene después del parámetro varchar en la consulta hibernate construye.
Encontramos el mismo problema con Hibernate 3.2.1 y lo solucionamos insertando el registro sin CLOB primero y luego actualizando ese registro con CLOB.
public class Employee{
@Lob
@Column
private String description;
//getters setters
}
String desc = emp.getDescription();
emp.setDescription(null);
session.save(entity);
session.flush();
session.evict(entity);
StringBuilder sb = new StringBuilder();
sb.append("update Employee set description:description");
Query updateQuery = session.createQuery(sb.toString());
updateQuery.setParameter("description", desc, Hibernate.STRING);
updateQuery.executeUpdate();
Si está utilizando anotaciones de Hibernate, entonces no hay manera de predecir el orden de las columnas en la instrucción de inserción. Esto fue arreglado en Hibernate v4.1.8.
- 1. Oracle CLOB y JPA/Hibernate ¿ORDEN POR?
- 2. Oracle CLOB performance
- 3. Oracle: ¿LARGO o CLOB?
- 4. Uso de Oracle 10g CLOB con Grails 2.0.1
- 5. extraño Oracle SQL "no válida identificador" error
- 6. Cómo consultar una columna CLOB en Oracle
- 7. ¿Por qué ha cambiado Hibernate para usar LONG over CLOB?
- 8. Extraño error de Oracle: Identificador demasiado largo ORA-00972
- 9. Oracle 10g: Extraer datos (seleccionar) de XML (tipo CLOB)
- 10. Hibernate Oracle y codificación de caracteres
- 11. NHibernate extraño error
- 12. ¿Cómo leer una columna CLOB en Oracle utilizando OleDb?
- 13. Cómo convertir CLOB a VARCHAR2 dentro de oracle pl/sql
- 14. Inserción Clob con NamedParameterJdbcTemplate
- 15. Error extraño de iOS con UITableViewCell y userInteractionEnabled
- 16. Oracle Char type e Hibernate
- 17. Cadena a CLOB con postgreSQL
- 18. setFirstResult de Hibernate() problema con Oracle controlador JDBC
- 19. boost mutex error extraño con miembro privado
- 20. extraño error inesperado T_STRING
- 21. Hibernar en Oracle: asignación de propiedad de cadena a la columna CLOB
- 22. Un error extraño (COBOL)
- 23. LLDB error extraño
- 24. git push error: pack-objects murió con error extraño
- 25. MySQL round error extraño
- 26. extraño GCC error
- 27. error extraño NSAssert
- 28. Extraño Maven error de memoria
- 29. Extraño C# error de desbordamiento
- 30. oracle hibernate + maven dependenciesm dbcp.basicdatasource excepción
he encontrado que con las entidades XML mapeado podría cambiar el orden de las propiedades de la configuración para obtener los CLOBs hasta el final de la instrucción INSERT/UPDATE. P.ej. ' ' –