使用Spring在Hibernate中保存集合

时间:2011-12-19 00:58:31

标签: hibernate spring

我正在尝试保存一个具有集合作为属性的实体,该实体也必须保留在数据库中,因此我遇到以下问题:如果我在保留集合之前保存实例,则会出现以下错误:

  

对象引用未保存的瞬态实例 - 在刷新之前保存瞬态实例:asd.qwe.MyCollection;嵌套异常是org.hibernate.TransientObjectException:...

否则,如果我在保存我的实体之前尝试保存集合,或者如果我在cascade="save-update"定义中设置list,我会得到这个:

  

Hibernate操作:无法插入:[asd.qwe.MyCollection];未分类SQL的SQLException [插入entity_collections(fk_entity,field2,field3)值(?,?,?)]; SQL状态[HY000];错误代码[1364];字段'fk_entity'没有默认值;嵌套异常是java.sql.SQLException:字段'fk_entity'没有默认值

这是完全正确的,因为'fk_entity'指的是我尚未保存的实体,并且具有NOT NULL限制。

我想知道为什么Hibernate试图在实际实体之前保存集合?并且..是否有可能扭转储蓄令?

1 个答案:

答案 0 :(得分:0)

您可以在实体的hbm文件中配置一对多映射,当您保存实体时,Hibernate会将Set保存到DB中。

<set name="your_set" cascade="all">
    <key column="set_contact_column"/>
    <one-to-many class="your_set_class_name" />
</set>