JDK 1.6x、Hibernate 3.2.7、Oracle 10g (ojdbc14.jar)
clob を含む (エンティティ) クラスがあります。RESTful 呼び出しを通じて、CLOB のコンテンツとなる文字列が渡されます。後で永続化するために、文字列を clob に詰め込むのに問題があります。これがクラスです....
public class MyClass implements java.io.Serializable {
private static final long serialVersionUID = 5507279748316866736L;
private long id;
private String name;
private String description;
private java.sql.Clob featuresJson;
...etc...
これが逆シリアル化コードです...
try {
String jsonStr = msoNode.path("features_json").getTextValue();
SerialClob clob = new SerialClob(jsonStr.toCharArray());
mso.setFeaturesJson(clob);
} catch (Exception e) {
log.error("MyClassDeserializer.deserialize(): Exception deserializing the features JSON." + e.getMessage());
}
逆シリアル化の後、私は Dao のマージステートメントに取り組んでいます...
MyClass savedOverlay = myClassDao.merge(overlay);
ここで、「overlay」はデシリアライズされた「MyClass」インスタンスです。この時点で、CLOB の内部をのぞいてデータを確認できますが、返されたインスタンスの CLOB フィールドは null 化されており、データベースの Clob 列も null です。
逆シリアル化コードの何が問題になっていますか? 他にもいくつか試しましたが、毎回失敗します(少なくともそれは一貫しています!)