为啥在 JPA 2/Hibernate 中使用共享主键时实体需要可序列化?
Posted
技术标签:
【中文标题】为啥在 JPA 2/Hibernate 中使用共享主键时实体需要可序列化?【英文标题】:Why does an Entity need to be serializable when using shared primary key in JPA 2/Hibernate?为什么在 JPA 2/Hibernate 中使用共享主键时实体需要可序列化? 【发布时间】:2011-07-27 21:46:24 【问题描述】:所以我有以下情况:
@Entity
class Image
@Id
@GeneratedValue
private Long id;
....
@Entity
class ImageData implements Serializable
@Id
@OneToOne
private Image image;
....
这一切都很好,但为什么 ImageData 需要可序列化?如果不是我得到它需要可序列化的异常:
org.hibernate.MappingException: composite-id class must implement Serializable:...
我知道 Identifier 需要可序列化,但为什么现在反过来了?
【问题讨论】:
这很奇怪 - 我的印象是 所有 JPA 实体类都需要可序列化。 如果你没有任何特定于hibernate的东西,你可以尝试用eclipselink替换它,看看这个行为是否一致。如果不是 - 提出问题。 Why composite-id class must implement Serializable?的可能重复 【参考方案1】:Hibernate 论坛上有一个类似主题的讨论应该回答你的问题,看看here
【讨论】:
好吧,他们还说具有复合 ID 的类需要可序列化,但不是为什么......以上是关于为啥在 JPA 2/Hibernate 中使用共享主键时实体需要可序列化?的主要内容,如果未能解决你的问题,请参考以下文章
JPA 2.0 (Hibernate) 使用 @JoinTable 为 @OneToMany 生成不正确的连接表 PK
使用 JPA 2.1 / Hibernate 4 将值列表传递给存储过程