gpt4 book ai didi

java - 将序列化 java 对象保存到 Db 时出现问题

转载 作者:行者123 更新时间:2023-12-02 07:35:37 25 4
gpt4 key购买 nike

我有可序列化的 Java 类配置。

我想创建一个配置实例,其中包含字符串、文档(org.w3c.dom.Document)类型的数据,并将其保存到 BLOB 类型的 Db 中。

但是当我将其保存到数据库中时,它会抛出异常:

java.io.NotSerializableException: org.w3c.tidy.DOMElementImpl

我的配置类是:

public class Configuration extends Tag implements Serializable{

private Document doc = null ;
private String checkpoint=null;

}

将配置对象保存到数据库时,我使用了以下代码:

ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput out = new ObjectOutputStream(bos);
out.writeObject(configuration);
byte[] confBytes = bos.toByteArray();

我首先将其转换为字节数组,然后保存。

谁能帮我解决这个问题..

最佳答案

java.io.NotSerializableException: org.w3c.tidy.DOMElementImpl

这表示 DOMElementImpl 类未标记为 Serializable。即使您的 Configuration 类实现了 Serializable,类中的所有字段也需要这样做。我认为 Document 是有问题的字段。引用this serialization tutorial :

Notice that for a class to be serialized successfully, two conditions must be met:

  • The class must implement the java.io.Serializable interface.

  • All of the fields in the class must be serializable. If a field is not serializable, it must be marked transient.

查看DOMElementImpl class ,它确实实现了可序列化。如果您需要将其序列化到数据库,那么您需要在存储到数据库之前将其导出到另一个类。

关于java - 将序列化 java 对象保存到 Db 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12282169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com