Я использую Hibernate Tools 3.2.1.GA с Spring версией 3.0.2. Я привязываю для вставки данных в поле базы данных Oracle (10g) типа clob
следующим образом.
Clob c=Hibernate.createClob(request.getParameter("someTextFieldValueOnJSPPage");
pojoObj.setSomeClobProperty(c);
он работает нормально, но когда я пытаюсь вставить поток данных с помощью CKEditor, demo на моей странице JSP (CKEditor просто отображает элемент HTML <textarea></textarea>
), который может включать форматированный текст, а также изображения, флеш-память и т.д., он выдает следующее исключение.
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
Как разрешить это исключение? Это проблема с драйвером Oracle или что-то еще? Я использую ojdbc14.jar
, Oracle JDBC Driver version - 9.0.2.0.0
.
UPDATE:
Одно из объектов, использующих тип clob
,
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.
}
В моем классе контроллера Spring я использую следующий код для выполнения вставки типа clob
в 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);
Где model
является просто a Map model
, формальным параметром метода submit()
в классе контроллера Spring, который вызывается при нажатии кнопки отправки на странице JSP.
Я извлекаю данные, используя следующий простой метод в классе контроллера Spring
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();
}
Попытался сделать так, как упоминалось здесь, но безрезультатно (у меня есть те же исключения, что указаны в этом вопросе).