8

クラスがあるとします:

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

    public Clob getDataXML() {
       return dataXML;
    }

    public void setDataXML(Clob dataXML) {
       this.dataXML = dataXML;
    }
}

そして Hibernate マッピング xml:

 <property name="dataXML" type="java.sql.Clob">
        <column name="XML" sql-type="CLOB"/>
 </property>

Javaコードでは、文字列をClobに、またはその逆に変換してデータベースに保存する方法:

Ex: EventTransaction et = new EventTransaction();
    String xml = "fdfsafafafa";
    et.setDataXML(convertStringToClob(xml));
    HibernateTemplate.saveOrUpdate(et);

関数convertStringToClob (文字列データ); の実装方法を教えてください。

ありがとう、

4

3 に答える 3

17

これを行う

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

public String getDataXML() {
   return dataXML;
}

public void setDataXML(String dataXML) {
   this.dataXML = dataXML;
}

したがって、変換する必要はなく、すべてが Hibernate によって行われます。

注釈を使用して示しましたが、ファイルを使用しても同じことができ.hbm.xmlます。

于 2013-05-20T03:35:29.203 に答える
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();
     }

そして、私が間違っていなければ、Clobを作成するには、次のようにします

     Clob myClobFile = new SerialClob("my string".toCharArray());
于 2013-05-20T03:08:00.570 に答える