我java.sql.Clob在Hibernate中有一个带有列的表
java.sql.Clob
该hbm文件中:
hbm
<class name="com.model.ClobModel" table="table1"> <id name="id" column="id"> <generator class="assigned"></generator> </id> <property name="clobData" type="clob"> <column name="ClobData"></column> </property>
这是ClobModel:
ClobModel
private Integer id; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } private Clob clobData; public Clob getClobData() { return clobData; } public void setClobData(Clob clobData) { this.clobData = clobData; }
当我在hibernate模式下尝试时:
SessionFactory sf = new Configuration().configure("clob.cfg.xml").buildSessionFactory(); Session sess = sf.openSession(); ClobModel cb = new ClobModel(); cb.setId(101); try { // getClobData() method returns String, trying to convert it into java.sql.Clob and then assign it to the model cb.setClobData(new javax.sql.rowset.serial.SerialClob(new ClobInsert().getClobData().toCharArray())); } catch (SerialException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } sess.save(cb); sess.flush(); System.out.println("Exit!!!");
我有一个例外:
javax.sql.rowset.serial.SerialClob cannot be cast to oracle.sql.CLOB
Clob上面提到的所有类型java.sql.Clob。
Clob
不确定如何将转换String为java.sql.Clob?
String
您需要将字段类型明确映射到java.sql.Clob。
<property name="data" type="java.sql.Clob" update="true" insert="true" column="data" />