并且,从表里面也有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会自动保存关联对象,只有你在映射文件中指定了。
你的应该是映射文件的问题。。
在配置文件中设置成级联应该可以吧
当过神卖过萌