jpa级联操作详解5-级联更新2(CascadeType.MERGE)

在上一讲中我们看到两次发出的sql语句是一样的,也就是说两种情况对数据库的操作是一样的,为什么会这样呢?

主要是由于,级联更新在实体是游离状态下才起作用现在依然使用上一讲的实体bean;

第一次在Garage.java 不添加CascadeType.MERGE注解

	@OneToMany(cascade={CascadeType.PERSIST},mappedBy="garage")
	public Set<Auto> getAutos() {
		return autos;
	}

重新编写单元测试方法

	@Test public void update() {
		EntityManagerFactory factory = Persistence.createEntityManagerFactory("jpa-hibernate");
		EntityManager em = factory.createEntityManager();
		em.getTransaction().begin();
		Garage garage = em.find(Garage.class, 1);
		em.clear(); //改为游离状态
		garage.setGaragenum("RoomTOP");
		
		em.merge(garage);
		em.getTransaction().commit();
		em.close();
		factory.close();
	}

 运行之后

观察发出的sql语句

Hibernate: select garage0_.gid as gid1_0_, garage0_.garagenum as g
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值