hibernate一对多问题处理

hibernate 用了不少时间,一直没有做过什么总结,每次碰到问题就倒腾几下好了就过去了。这次下决心立文,以后碰到问题就加在后面。

举两个不同的例子:

例1:问题 - -> 多选答案【一对多,采用list方式】

QuestionModel 配置文件:

<list name="selectionList" cascade="all" inverse="true" lazy="false"><!-- selectionList为private List<SelectionModel>  selectionList;-->
            <key>
                <column name="QUESTION_ID" not-null="true"/><!-- Selection表里的外键 -->
            </key>
            <index column="SEL_NO" /><!-- list是有序的,需要新增加一个额外的排序字段供hibernate使用 -->
            <one-to-many class="com.xxx.model.SelectionModel" />
        </list>

SelectionModel配置文件:

<many-to-one name="question" class="com.xxx.model.QuestionModel" fetch="select">
            <column name="QUESTION_ID" precision="22" scale="0" /><!-- Selection表里的外键 -->
        </many-to-one>

selectionTable:



例2:问题类型 - -> 问题【一对多,采用set】

QuestionTypeModel的配置文件:

<set name="questionModel" inverse="true" cascade="all">
            <key>
                <column name="TYPE_ID" precision="22" scale="0" /><!-- Question表里的外键 -->
            </key>
            <one-to-many class="com.xxxx.model.QuestionModel" />
        </set>

QuestionModel的配置文件:

        <many-to-one name="questionTypeModel" 
        class="com.xxxx.model.QuestionTypeModel" 
        fetch="select" lazy="false">
            <column name="TYPE_ID" precision="22" scale="0" />
        </many-to-one>


例3: 购物车- -> 商品清单【一对多, 采用bag】

ShoppingCart 的配置文件:

<bag name="items" order-by="id asc" lazy="false" inverse="true">  
  <key column="cartId" /><!-- productitem的外键 --> 
  <one-to-many class="com.xxxx.model.ProductItem"/>  
</bag>

ProductItem 的配置文件:

<many-to-one name="cart" 
        class="com.xxxx.model.ShoppingCart" 
        fetch="select" lazy="false" cascade="all" outer-join="true">
            <column name="cartId" precision="20" scale="0" /><!-- productitem的外键 --> 
        </many-to-one>

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

常见问题:

no1: 保存时出现:org.hibernate.TransientObjectException:  object references an unsaved transient instance - save the transient instance before flushing: com.xxxx.model.ProductItem

问题解决方法是之前忘记在“一”方(购物车)中加入 inverse="true" ,加上就好了。

(未完待续..)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值