我正在尝试保存一个具有集合作为属性的实体,该实体也必须保留在数据库中,因此我遇到以下问题:如果我在保留集合之前保存实例,则会出现以下错误:
对象引用未保存的瞬态实例 - 在刷新之前保存瞬态实例: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试图在实际实体之前保存集合?并且..是否有可能扭转储蓄令?
答案 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>