用户登录
用户注册

分享至

hibernate级联保存

  • 作者: 当过神卖过萌
  • 来源: 51数据库
  • 2020-10-07
首先说一下隐含字段,两个表都有ID 且叫 user_ID 和 msg_ID 用户表为主表 留言表为从表
并且,从表里面也有user_ID用来关联两表的 配置hbm的时候.将主表的user_ID和从表的user_ID关联起来.级联设置为save 再类里面实现的时候. 就是 用户表类里面的一个属性 是从表类类型的 比如 class A { String name=""; String phone=""; B b=null} class B{String msg}
A里面有B的实例 这时候.你new 一个B的对象 b2 将msg赋值 让A.b=b2
再把A的name和phone赋值....你调用hibernate里面A的保存方法,就可以级联保存了.B也被保存了.



  
30 分啊 拼了 
全是心血啊
·················
首先,你的inverse应该等于true吧.
inverse=true表示不关联,即不维护关系。
在一对多中,一般建议采用一的一方关联关系。
有助于提高效率。
在一的一方加上 cascade=“all/save-update”
一般无特殊需求设置为save-update就ok了
这样设置过后,就会自动关联保存了

你的异常是
非空属性指向一个空值或transient属性。
排除transient,就是说你的student有一个属性是空的,而你的表约束中这个属性确实要求非空。

回答你的问题:

1:不是hibernate在new的时候给对象oid值赋予null的
这是你new对象时没有给oid属性赋值,自动初始化为null的
而在映射文件中id的unsaved—value=null
这里的意思是指如果这个对象的id值在程序中指定为null,那么就为它获取一个id值,若不等于null,就不获取id值,保持原来不变。当然你也可以unsaved-value为其他值。
并不是说你把这设置为2,你new一个对象时,他的oid值就为2了。
2
hibernate会自动保存关联对象,只有你在映射文件中指定了。
你的应该是映射文件的问题。。




  在配置文件中设置成级联应该可以吧
软件
前端设计
程序设计
Java相关