【问题标题】:Hibernate and Serializable休眠和可序列化
【发布时间】:2011-12-27 04:44:52
【问题描述】:

我有点困惑,我的印象是类只需要实现可序列化,好吧,如果我需要序列化它们(例如,如果我想要的只是,hibernate 不需要类是可序列化的持久性)

无论如何,以下让我有点困惑。我有一个班级,我们称它为 A。它与另一个班级有一对一的关系。我们就叫它B吧。

我现在也添加了另一个与类 C 的一对一关系,现在,当我使用 mySession.get(A.class, myid) 时出现运行时异常,告诉我不能强制转换 C可序列化

当我的其他休眠类都不需要它时,我无法理解为什么 C 需要实现可序列化。

更新

另一个奇怪的事情是,这个映射实际上在过去没有“C”类可序列化的情况下工作。

不过,我使用 mysql 客户端手动更改了表内的数据。我运行了一个更新,它使用 UPPER() 函数将表中的所有字符串都转换为大写。这可能是导致 hibernate 现在希望该类可序列化的原因吗?

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    当您忘记映射到您的类的持久对象时,该错误很常见,

    例如你有一个持久类用户里面有另一个持久类地址,地址被映射到但在用户中你忘记了一对一的关系然后你映射为基本类型

    检查您的代码是否存在任何已被原谅的关系映射

    【讨论】:

    • 您好,感谢您的回答。映射应该没问题。我会更新我的问题以尝试提供更多信息
    • 在 C 类中你使用延迟加载方法吗?
    • 是的,我正在使用延迟加载,但是,如果我从数据库中的表中清除所有“C”实例,它似乎不需要可序列化,直到数据被放入桌子。会不会和代理有关?
    • 就是这样,当您使用惰性方法时,您实际上是通过代理传递数据(在需要时调用数据)尝试使用急切加载
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多