Estoy usando Hibernate Tools 3.2.1.GA con Spring versión 3.0.2. Estoy tratando de insertar datos en el campo de base de datos Oracle (10g) de tipo clob
de la siguiente manera.java.sql.SQLException: operación no permitida: el tipo de secuencias no se puede usar en lotes mientras se insertan datos en el tipo de datos de Oracle clob
Clob c=Hibernate.createClob(request.getParameter("someTextFieldValueOnJSPPage");
pojoObj.setSomeClobProperty(c);
funciona muy bien, pero cuando intento insertar una corriente de datos usando un CKEditor, demo en mi página JSP (la CKEditor simplemente hace que un archivo HTML <textarea></textarea>
elemento) que puede incluir texto con formato, así como imágenes, flash, arroja la siguiente excepción.
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.GenericJDBCException: could not update: [model.Cms#1]
org.hibernate.exception.GenericJDBCException: could not update: [model.Cms#1]
java.sql.SQLException: operation not allowed: streams type cannot be used in batching
Cómo resolver esa excepción? ¿Es este el Oracle driver problem o algo más? Estoy usando ojdbc14.jar
, Oracle JDBC Driver version - 9.0.2.0.0
.
ACTUALIZACIÓN:
Una de las entidades que utilizan el tipo Clob
es
public class Cms implements java.io.Serializable
{
private BigDecimal cmsId;
private Clob aboutUs; //I'm currently dealing with this property.
private Clob contactUs;
private Clob privacyPolicy;
private Clob returnPolicy;
private Clob shippingPolicy;
private Clob termsOfUse;
private Clob exchangeLinks;
private Clob disclaimer;
private Clob aboutProducts;
private Clob purchasingConditions;
private Clob faq;
//Parameterized constructor(s) along with the default one as and when needed.
//Getters and setters.
}
En mi clase controlador primavera, estoy usando el siguiente código para llevar a cabo inserción en el tipo Clob
en Oracle.
Cms c=new Cms();
c.setCmsId(new BigDecimal(0));
c.setAboutUs(Hibernate.createClob(request.getParameter("txtAboutUs")));
session.save(c);
session.flush();
session.getTransaction().commit();
model.put("status", "1");
model.put("msg","Insertion done successfully.");
//setParameter(cb);
Dónde model
es simplemente una Map model
, un parámetro formal del método submit()
en la clase del controlador de primavera, que se invoca cuando se hace clic en un botón de envío en la página JSP.
estoy recuperar datos utilizando el siguiente método simple en la clase del controlador de primavera
private void getData(Map model)
{
Session session=NewHibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
List<Cms>list=session.createQuery("from Cms order by cmsId desc").list();
model.put("list", list);
session.flush();
session.getTransaction().commit();
}
tratado de hacer como se ha mencionado here pero en vano (estoy frente a las mismas excepciones como se especifica en esa pregunta).
Fue de hecho el problema del controlador de Oracle. Estaba usando 'Oracle JDBC Driver version - 9.0.2.0.0'. Acabo de descargar una nueva versión de [aquí] (http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-10201-088211.html) que es 'Oracle JDBC Driver version - 10.2.0.5. 0' que funciona bien en todas las situaciones. – Tiny
Deberías publicar eso como la respuesta y marcarlo. – pickypg
@Tiny Responda su propia pregunta y luego márquela como respuesta. Gracias. –