Używam narzędzi Hibernuj 3.2.1.GA ze Spring version 3.0.2. Przywiązuję się do wstawienia danych do bazy Oracle (10g) w polu bazy danych typu clob
w następujący sposób.Wywołanie java.sql.SQLException: operacja niedozwolona: typ strumieni nie może być używany podczas grupowania podczas wstawiania danych do typu danych clob Oracle.
Clob c=Hibernate.createClob(request.getParameter("someTextFieldValueOnJSPPage");
pojoObj.setSomeClobProperty(c);
to działa dobrze, ale gdy próbuję wstawić strumień danych z wykorzystaniem CKEditor, demo na mojej stronie JSP (the CKEditor prostu renderuje HTML <textarea></textarea>
element), który może obejmować tekst sformatowany, a także obrazy, flash itp., rzuca następujący wyjątek.
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
Jak rozwiązać ten wyjątek? Czy to jest Oracle driver problem czy coś innego? Używam ojdbc14.jar
, Oracle JDBC Driver version - 9.0.2.0.0
.
UPDATE:
Jednym z podmiotów, który używa typu Clob
jest
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.
}
W moim wiosennym klasie kontrolera używam następujący kod do wykonywania wstawienie na typ Clob
w 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
Gdzie jest po prostu Map model
, formalny parametr metody w klasie kontrolera Wiosny submit()
która jest wywoływana, gdy przycisk submit kliknięciu na stronie JSP.
mam pobierania danych za pomocą następującego prostą metodę w klasie kontrolera Wiosna
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();
}
próbował zrobić jak wspomniano here ale bezskutecznie (jestem w obliczu tych samych wyjątków określonych w to pytanie).
To był rzeczywiście problem sterownika Oracle. Używałem 'Oracle JDBC Driver version - 9.0.2.0.0'. Właśnie pobrałem nową wersję z [here] (http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-10201-088211.html), która jest 'Oracle JDBC Driver version - 10.2.0.5. 0', który działa dobrze we wszystkich sytuacjach. – Tiny
Powinieneś opublikować to jako odpowiedź i oznaczyć ją. – pickypg
@Tiny Odpowiedz na swoje pytanie, a następnie oznacz jako odpowiedź. Dziękuję Ci. –