【问题标题】:Could not deserialize org.hibernate.type.SerializationException无法反序列化 org.hibernate.type.SerializationException
【发布时间】:2012-10-05 18:09:18
【问题描述】:

请帮助 - 我的应用程序运行良好,直到今天。今天我得到了“无法反序列化”的异常。 java.io.eofException。有时我能够获得数据。问题是间歇性的。这里可能是什么问题?

@Entity
@Cacheable
@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)
public class Filter {
private int id;
    private String name;
    private User user;
    private NameValue[][] filterMap;


    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE)
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    @ManyToOne(
            targetEntity = User.class
    )
    @JoinColumn(name="userName")
    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }
    @Lob
        public NameValue[][] getFilterMap() {
        return filterMap;
    }
    public void setFilterMap(NameValue[][] filterMap) {
        this.filterMap = filterMap;
    }

【问题讨论】:

  • 你能提供更多细节吗?可能是堆栈跟踪

标签: hibernate serialization


【解决方案1】:

这可能是因为对象可以被缓存,并且您必须已将缓存配置为溢出到磁盘(或任何其他存储)。

当您尝试对类进行序列化或反序列化时会出现问题,并且会发生以下一种或多种情况:

  1. 类或任何字段(例如 User)未实现 Serializable
  2. 自上次部署以来,该类已更改,java 生成一个新的 serialVersionUID。当 java 尝试加载以前在磁盘缓存中的对象时,serialVersionUID 不匹配并引发错误。
  3. 您正在使用不同的 JVM,它会生成不同的 serialVersionUID

【讨论】:

  • 嗨奥古斯托!非常感谢您的回复。实际上我也在使用ha-jdbc。我们在生产环境中启用了 L2 缓存 true org.hibernate.cache.infinispan.InfinispanRegionFactory property> false 我不完全了解缓存的使用情况。但也许我会尝试禁用它。
  • 嗨,Jess,尝试创建休眠类 Serializable,这可能会解决问题。
【解决方案2】:

你必须为 Hibernate 实体实现 Serializable 接口并保持默认的private static final long serialVersionUID = 1L。它的值可以是任何值,不一定只有 1L。

例如:

public class Med implements Serializable {
   private static final long serialVersionUID = 1L;
}

【讨论】:

    【解决方案3】:

    这个问题我遇到并得到了解决方案, 对我来说,它已经解决了 db 端在其余行插入 Hibernate 之后手动插入了一些行,所以在检索时间时,这个错误引发的解决方案很简单,删除整个 db 数据或手动输入的行,然后通过 hibernate 重新插入,然后检索数据(标准)这次没有例外. - Mallikarjun Chinta

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-06
      • 1970-01-01
      • 2016-12-30
      • 1970-01-01
      相关资源
      最近更新 更多