Java:使用Hibernate合并实例w / Oracle CLOB数据

时间:2011-03-04 16:51:37

标签: java oracle hibernate clob

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字段无效,并且数据库中的clob列也为空!

我的反序列化代码出了什么问题?我尝试过其他一些事情,但每次都会失败(至少这是一致的!)

1 个答案:

答案 0 :(得分:1)

解决!

需要在列上指定注释@Lob。同样被反向设计为java.sql.Clob类型的列需要更改为String。