【问题标题】:Saving data into Clob using Hibernate in Oracle 10g在 Oracle 10g 中使用 Hibernate 将数据保存到 Clob
【发布时间】:2014-04-04 06:19:07
【问题描述】:

我在 Hibernate 中有一个带有 java.sql.Clob 列的表

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

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;
}

当我在休眠中尝试这个时:

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类型。

不确定如何将String 转换为java.sql.Clob

【问题讨论】:

    标签: java oracle hibernate oracle10g clob


    【解决方案1】:

    您需要将字段的类型显式映射到java.sql.Clob

    <property
        name="data"
        type="java.sql.Clob"
        update="true"
        insert="true"
        column="data"
    />
    

    【讨论】:

    • 收到此异常:java.lang.ClassCastException: javax.sql.rowset.serial.SerialClob cannot be cast to oracle.sql.CLOB。请查看上面发布的代码中的字符串到 CLOB 的转换(我使用 SerialClob 进行的。这似乎是不正确的 :(
    • 不要使用它,只需使用java.sql.Clob,其余的将由休眠完成。
    • ok 那么这一行将显示编译错误:cb.setClobData(new ClobInsert().getClobData());。在这里,getClobData 返回String,但在模型中,setClobData 期待java.sql.Clob。请让我知道还有什么地方可以改变?请帮忙
    • 使用cb.setClobData(Hibernate.createClob(new ClobInsert().getClobData()));
    猜你喜欢
    • 2012-05-08
    • 2015-06-15
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多