Tôi đang sử dụng Công cụ Hibernate 3.2.1.GA với phiên bản Spring 3.0.2. Tôi đang buộc phải chèn dữ liệu vào trường cơ sở dữ liệu Oracle (10g) loại clob
như sau.java.sql.SQLException: hoạt động không được phép: loại luồng không thể được sử dụng theo đợt trong khi chèn dữ liệu vào kiểu dữ liệu dấu kiểm Oracle
Clob c=Hibernate.createClob(request.getParameter("someTextFieldValueOnJSPPage");
pojoObj.setSomeClobProperty(c);
nó hoạt động tốt nhưng khi tôi cố gắng để chèn một dòng dữ liệu bằng CKEditor, demo trên trang JSP của tôi (các ckeditor chỉ đơn giản là làm cho một HTML <textarea></textarea>
phần tử) có thể liên quan đến việc định dạng văn bản cũng như hình ảnh, flash vv, nó ném ngoại lệ sau đây.
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
Làm thế nào để giải quyết ngoại lệ đó? Đây có phải là Oracle driver problem hoặc cái gì khác không? Tôi đang sử dụng ojdbc14.jar
, Oracle JDBC Driver version - 9.0.2.0.0
.
UPDATE:
Một trong những đơn vị có sử dụng các loại Clob
là
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.
}
Trong lớp điều khiển Mùa xuân của tôi, tôi đang sử dụng đoạn mã sau để thực hiện chèn vào loại Clob
trong 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);
đâu model
chỉ đơn giản là một Map model
, một tham số chính thức của submit()
phương thức trong lớp điều khiển mùa xuân mà được gọi khi một nút gửi được nhấp trên trang JSP.
Tôi lấy dữ liệu bằng cách sử dụng phương pháp đơn giản sau đây trong lớp điều khiển Xuân
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();
}
Cố gắng để làm như đã đề cập here nhưng không có kết quả (Tôi đang phải đối mặt với các ngoại lệ tương tự như quy định tại câu hỏi đó).
Nó thực sự là vấn đề trình điều khiển Oracle. Tôi đang sử dụng phiên bản Oracle JDBC Driver - 9.0.2.0.0'. Tôi vừa tải xuống một phiên bản mới từ [tại đây] (http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-10201-088211.html) là phiên bản Trình điều khiển Oracle JDBC - 10.2.0.5. 0' hoạt động tốt trong mọi tình huống. – Tiny
Bạn nên đăng câu trả lời đó và đánh dấu nó. – pickypg
@Tiny Trả lời câu hỏi của riêng bạn và sau đó đánh dấu câu trả lời. Cảm ơn bạn. –