竟然是这个原因导致Hibernate级联保存出错

[color=darkblue] 今天帮朋友改一个问题,hibnernate的级联保存出错,莫名奇妙的错误,一会session关闭了,一会瞬时对象无法保存,一遍又一遍的检查这mapping文件,没什么问题啊,这是单项一对多关联:
[b]一端:[/b]
<hibernate-mapping package="com.bestv.bi.usertrack.model">
<class name = "ParameterRecord" table = "fact_parameterrecord">
<id name="id" type="long">
<column name="id" precision="22" scale="0" />
<generator class="sequence">
<param name="sequence">SEQ_PARAMETERRECORD</param>
</generator>
</id>
。。。
<set name="paraValues"
table="FACT_PARAVALUE"
lazy="false"
inverse="false" cascade="all" >
<key column="RECORD_ID"/>
<one-to-many class="ParaValue" />
</set>
</class>
</hibernate-mapping>

[b]多端不做配置[/b]。
感觉没什么错啊。
再加上flex前台通过blazeds访问后台,一开始都没有打出报错信息,以为是事务没有配置好,改来改去都不对。后来打出faultevent信息,才发现定位到hibnerate数据库保存出错。可是想来想去也不知为什么。后来才发现tmd他的FACT_PARAVALUE表中的RECORD_ID有个不能为空的约束导致的这个问题。
原因是,当hibernate保存ParameterRecord对象的时候,是先保存fact_parameterrecord表的记录和FACT_PARAVALUE表的记录,然后再去updateFACT_PARAVALUE表中RECORD_ID字段。也就是说,在保存FACT_PARAVALUE记录的时候是没有RECORD_ID信息的,而这个字段恰好有not null约束,所以导致错误。[/color]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值