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

标签 java oracle hibernate clob

JDK 1.6x、Hibernate 3.2.7、Oracle 10g (ojdbc14.jar)

我有一个包含 clob 的(实体)类。通过 RESTful 调用,我传递了一个字符串,该字符串将成为 clob 的内容。我在将字符串填充到 clob 中以供以后持久化时遇到问题。这是类(class)......

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 列也为空!

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

最佳答案

解决了!

需要在列上指定注释@Lob。已被逆向工程为 java.sql.Clob 类型的同一列也需要更改为 String。

关于Java:使用 Hibernate 合并实例与 Oracle CLOB 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5196765/

相关文章:

java - finally 和 write after catch 的区别

java - 如何使用Java从属性文件中选取一组随机值?

mysql - 两个类之间是否可以有两个链接(关联)?

在给定起点和终点之间生成字母序列的SQL

mysql - 如何连接两个表并在 hibernate 中迭代

java - 缓存来自 RMI 的 POJO

javascript - 在java spring boot中如何使用thymeleaf将表单操作作为函数传递,如何将表单操作解析为函数

oracle - 如何强制 where 子句中的函数在 oracle 中执行一次?

java - Hibernate TABLE 未映射

java - 如何从 Hibernate 上的外键引用的表中获取值?