将列表存储在hibernate中作为Serializable对象

时间:2011-07-08 09:47:56

标签: java list hibernate-mapping

通常我们通过hibernate映射将List存储在数据库中:

<list name="userItems" cascade="all" lazy="false">
    <key column="user_date_id"/>
    <index column="idx"/>
    <one-to-many class="UserItem"/>
</list>

还有其他方法吗?我们可以将它存储为Seializable对象吗?像:

<property name="list" column="list" type="serializable" />

2 个答案:

答案 0 :(得分:3)

我使用Hibernate Annotiations,这里的技巧是将您的字段定义为List实现,如ArrayList。然后(就像实现Serializable的任何其他类一样 - 我猜)Hibernate将它作为bytea存储在数据库中。

当然,列表应该只包含实现Serializable的元素。

答案 1 :(得分:1)

我不确定你是否可以直接序列化列表,但如果没有,你可以为列表创建一个包装器对象并将其声明为大对象(不知道xml变体,但它是@Lob注释)。这应该自动序列化,因为它不是一个字符串,因此不是clob而是blob。