使用Hibernate序列化POJO列表

时间:2011-11-28 21:48:12

标签: java hibernate jpa orm

我有一个使用JPA映射到数据库表的Java类。在这个课程中,我有一个List<Code>我需要存储在数据库中。

所以Code类没有映射到Hibernate。有没有办法序列化List<Code>而不将Code类映射到Hibernate?提前谢谢。

错误讯息:

org.hibernate.exception.SQLGrammarException: could not insert collection [com.app.Account.codes#2]

问题是当Hibernate尝试序列化我的列表时出现错误。

@Entity
@Table (name="account", catalog="database1")
public class Account{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column (name = "id")
    private String id

    @Column (name = "type")
    private String type;

    @CollectionOfElements
    @Column (name = "codes")
    List<Code> codes;
    ...
    ...
}


public class Code implements Serializable{
//This is a basic POJO that is not mapped into Hibernate. I just want this object
//to be stored in database.
}

1 个答案:

答案 0 :(得分:3)

您需要使用@Lob注释代码字段,而不是@CollectionOfElements

请参阅http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#d0e6099和以下段落。

这是一种非常脆弱的持久化对象列表的方式,因为它使用二进制序列化,如果列表或Code类发生更改,它可能很快变为非向后兼容。使用数据库工具查询或检查也是不可能的。

我宁愿将Code类映射为实体或嵌入式。