在Hibernate中将String转换为Clob,反之亦然

hoa*_*yen 8 string hibernate clob

假设我有一个班级:

class EventTransaction {
    .....
    private Clob dataXML;

    public Clob getDataXML() {
       return dataXML;
    }

    public void setDataXML(Clob dataXML) {
       this.dataXML = dataXML;
    }
}
Run Code Online (Sandbox Code Playgroud)

和Hibernate映射xml:

 <property name="dataXML" type="java.sql.Clob">
        <column name="XML" sql-type="CLOB"/>
 </property>
Run Code Online (Sandbox Code Playgroud)

在java代码中,如何将String转换为Clob,反之亦然,以保存到数据库中:

Ex: EventTransaction et = new EventTransaction();
    String xml = "fdfsafafafa";
    et.setDataXML(convertStringToClob(xml));
    HibernateTemplate.saveOrUpdate(et);
Run Code Online (Sandbox Code Playgroud)

你能帮忙解决一下如何实现convertStringToClob函数(String data);

谢谢,

Ami*_*deh 14

做这个

@Column(name='xml')
@Lob
private String dataXML;

public String getDataXML() {
   return dataXML;
}

public void setDataXML(String dataXML) {
   this.dataXML = dataXML;
}
Run Code Online (Sandbox Code Playgroud)

所以没有必要转换,一切都是由Hibernate完成的.

我使用注释显示它,使用.hbm.xml文件可以完成同样的事情.

  • 谁限制你到64k? (3认同)
  • 哇呃...你刚刚为我节省了大约 20 行代码、“de-clob-ed Strings”的缓存和序列化的解决方法...只是向您展示在使用之前您应该了解您的工具(Hibernate)他们。谢谢! (2认同)

geo*_*e_h 5

这是我很久以前将Clob转换为String的代码.它意味着在实用程序类中使用.

    public static String convertClobToString(Clob clob) throws IOException, SQLException {
            Reader reader = clob.getCharacterStream();
            int c = -1;
            StringBuilder sb = new StringBuilder();
            while((c = reader.read()) != -1) {
                 sb.append(((char)c));
            }

            return sb.toString();
     }
Run Code Online (Sandbox Code Playgroud)

如果我没有弄错,要创建一个Clob,你会做这样的事情

     Clob myClobFile = new SerialClob("my string".toCharArray());
Run Code Online (Sandbox Code Playgroud)