jpa中一对多的级联增删改

本文介绍了JPA中一对多关系的级联增删改操作,以Customer和Contact表为例。在进行操作时,若不配置级联更新,可能会遇到瞬时态对象操作持久态对象导致的错误。正确做法是结合使用级联更新和mappedBy属性,以确保数据库中的关联关系得到正确维护。级联删除的设置也进行了讨论。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以Customer表和Contact表为例:

新增:

//一对多增加
	@Test
	public void testPersist() {
		Customer customer = new Customer();
		customer.setName("新客户");
		Contact contact = new Contact();
		contact.setName("新联系人");
		//添加双向关联关系
		customer.getContacts().add(contact);
		contact.setCustomer(customer);
		
		EntityManager em = MyJPAUtils.getEntityManager();
		EntityTransaction tx = em.getTransaction();
		tx.begin();
		em.persist(customer);//我已经在客户上配置了级联属性,所以这里直接保存customer即可
		tx.commit();
		em.close();
	}

更新:

	//一对多更新
	@Test
	public void testMerge() {
		Contact contact = new Contact();
		contact.setName("联系人4");
		
		EntityManager em = MyJPAUtils.getEntityManager();
		EntityTransaction tx = em.getTransaction();
		tx.begin();
		Customer customer = em.find(Customer.class, Integer.parseInt("1"));
		customer.ge
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值