Hibernate上路_13-一对一表单操作

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

当一张表中的字段太多,需要拆分为两张表,使用一对一表单关联。

1.外键关联: 

在任意一方添加对方主键作为外键列。

1POJO类:

Hibernate上路_13-一对一表单操作_第1张图片 

2POJO.hbm.xml

1 


	
		
			
		
		

		
		
	


2  


	
			
				
			
			
			
			
			
	


3hibernate.cfg.xml

Hibernate上路_13-一对一表单操作_第2张图片

4)操作:

1)成功操作:

public void insert() {
		Session session = UtilGetSession.openSession();
		Transaction transaction = session.beginTransaction();

		//创建用户
		PojoCompany company = new PojoCompany();
		company.setName("Pixar");	//皮克斯
		
		//创建订单1
		PojoAddress address = new PojoAddress();
		address.setInfo("加州北部爱莫利维尔市"); 
		
		//配置关联
		company.setAddress(address);
		address.setCompany(company);
		
		//保存全部相关数据
		session.save(company);
		session.save(address);
		
		transaction.commit();
		session.close();
	}


2TransientObjectException:

>1.仅操作主类-公司: 


>2.报出异常: 

org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: cn.cvu.hibernate.domain.PojoAddress 

>3.在主类中配置级联: 

Hibernate上路_13-一对一表单操作_第3张图片

>4. 当再次仅操作主类,会自动同时操作外联类。

2.主键关联:

两表的主键相同。

1POJO.hbm.xml配置:

1)主表配置one-to-one 

Hibernate上路_13-一对一表单操作_第4张图片

2)从表配置主键生成策略和关联:

Hibernate上路_13-一对一表单操作_第5张图片

2)操作从表:

此时仅操作从表,即可自动同时保存主表!

Hibernate上路_13-一对一表单操作_第6张图片

- end

转载于:https://my.oschina.net/vigiles/blog/177508

你可能感兴趣的:(Hibernate上路_13-一对一表单操作)