Hibernate报错:
原因是:当更新一个脱管态/持久态对象时,该对象关联了一个临时态对象。
解决方案:要更新谁,就在谁的映射文件中配置cascade属性,cascade取值:save-update,如下:
<many-to-one name="customer" class="CstCustomer" column="LKM_CUST_ID" cascade="save-update">
实例:
<span style="font-size:18px;"> @Test
public void test2(){
//数据准备
CstCustomer c = new CstCustomer();//临时态
c.setCustName("X东商城2");
c.setCustSource("网络");
c.setCustIndustry("电商");
c.setCustLevel("VIP");
c.setCustAddress("北京市大兴区亦庄开发区xxx");
c.setCustZip("100000");
Session s = HibernateUtil.getCurrentSession();
System.out.println(s);
Transaction tx = s.beginTransaction();
//查询ID为1的联系人
CstLinkMan man = s.get(CstLinkMan.class, 1l);//持久态
//为它设置一个新的客户
man.setCustomer(c);//持久态关联临时态
//更新联系人信息
s.update(man);
tx.commit();
}</span>
如果没有配置:
的话,就会出问题。