Java进阶之hibernate中cascade与inverse

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kdc18333608478/article/details/52719840

     我们都知道的是cascade强调的是操作关联对象,inverse强调的是外键的维护权。在我们设置了级联操作后,在保存的时候就会级联保存另外的级联对象,而设置了inverse之后,如果两个对象之间有双向维护关系,就会在设置的一方放弃外键维护权,那它们两个共同使用的时候会产生什么结果呢?

     我们可以通过一个简单的案例测试一下,就能得到结果,案例中customerlinkman为一对多关系,它们的映射文件配置截图如下:customer.hbm.xml中为:


linkman.hbm.xml中为:


测试代码如下:

public class TestDemo4 {
	@Test
	public void test(){
		Session session=HibernateUtils.getCurrentSession();
		Transaction transaction=session.beginTransaction();
		// 客户customer与联系人linkman为一对多关系
		Customer customer =new Customer();
		customer.setCust_name("客户1");
		
		LinkMan linkMan=new LinkMan();
		linkMan.setLkm_name("小李");
		//在Customer.hbm.xml中的set上配置cascade="save-update" inverse="true"
		customer.getLinkMans().add(linkMan);
		
		session.save(customer);
		transaction.commit();
	}
}
数据库中的customer表的内容显示:


linkman表的内容显示:


     这个时候我们会发现,如果在set集合上配置cascade="save-update" inverse="true"了,那么执行保存客户的操作,会发现客户和联系人都进入到数据库中了,但是没有外键,是因为配置了cascade 了所以客户关联的联系人会进入到数据库中,但是客户一段放弃了外键维护权,所以联系人插入到数据会是没有外键的。

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试

关闭