object references an unsaved transient instance

Hibernate报错:

object references an unsaved transient instance_第1张图片

原因是:当更新一个脱管态/持久态对象时,该对象关联了一个临时态对象。

解决方案:要更新谁,就在谁的映射文件中配置cascade属性,cascade取值:save-update,如下:


实例:

	@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();	
	}
如果没有配置:


的话,就会出问题。



object references an unsaved transient instance_第2张图片

你可能感兴趣的:(●,框架使用)