Hibernate配置单向一对多关联关系的一些问题

一.子表的外键是空值

可能原因:父表的hbm.xml文件中对set标签的设置为inverse="true",

如图:

而在添加时又是以父表的集合添加子表元素的,导致数据库中子表的外键为空

如图:

解决办法:1.可以将inverse置为"false",不写默认为false.

inverse简介:

inverse的意思是反转,用来设置关系哪一方是拥有者owner,由他来维护这个关系。

在一对多的关系中,包含Set/Collection 类实例是“一”,Set里面包含的类实例则是“多”的一方。可以理解为 Set/Collectin 是代码中一对多关系的表达,包含Set/Collection的类实例在没有设置inverse的时候是owner。

inverse="false" 是默认情况,此时没有反转,则 Set/Collection 关系由包含它的“一”这一方来维;

inverse="true" 时,表示 Set/Collection 关系由另一方来维护,由不包含这个关系的一方来维护这个关系,所以才称为“反转”了。




二.测试时出现TransientObjectException异常

这个异常代表一个持久化对象关联了一个瞬时对象。出现问题,就要着手解决,那又怎么解决呢?我们可以使用级联操作来解决上述的问题.

可能的解决办法:在一对多映射中设置cascade="save-update".

如图:


cascade简介:

所谓cascade,就是说我在更新一方的时候,可以根据这一方对象之间的关联关系,去对被关联方进行持久化,

比如说Team和Student之间的1对多关系,使用cascade,可以在team方维护其持有的student集合时,

自动对其新增,修改,删除的student对象进行持久化,而没必要显式的进行session.save(student)操作


参考文档:

1).https://blog.csdn.net/yerenyuan_pku/article/details/70152173

2).https://blog.csdn.net/daryl715/article/details/1916060

3).https://blog.csdn.net/yyd19921214/article/details/41113797


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值