`

JPA 级联更新去孤子

 
阅读更多

 

 在是使用JPA(hibernate)配置实体关系中,经常会遇到通过父实体对象级联批量更新子对象的需求,而且每次更新必须采用合并方式,即原来的所有子删除,只保留本次保存的所有子实体对象。

例子:

A为父对象,持有一个B的集合,A与B的关系为oneToMany. 

第一次保存:设置A下的B集合成员为:1,2,3, 保存A后,B对象对应的数据表为:1,2,3

第二次保存:设置A下的B集合成员为:2,3,4, 保存A后,B对象对应的数据表为:2,3,4 (自动删除无效数据1)

这个就是自动去孤子功能。

 

配置如下:

 

 

class A{
       private Set<B> bs = new HashSet<B>();
	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "flowNode", orphanRemoval = true)
	@OrderBy(clause = "id")
	public Set<B> getBs() {
		return bs;
	}
}

 

调用操作代码:

A a = new A();
Set<B> bs = new HashSet<B>();
bs.add(...)

a.getBs().clear();
a.getBs().addAll(bs);

 

 

 

分享到:
评论

相关推荐

    Hibernate 一对多、多对一、级联、加载、反转

    在Java持久化框架Hibernate中,一对多(One-to-Many)、多对一(Many-to-One)、级联(Cascading)、加载(Loading)和反转(Inversing)是关系映射的重要概念,它们对于理解如何在数据库和对象之间有效地管理关联至...

    JPA中的一对多双向关联与级联操作

    级联操作是JPA提供的一种特性,允许开发者指定当一个实体被持久化、更新、删除时,其关联的实体应该如何处理。这可以通过`CascadeType`枚举在`@OneToMany`注解中设置。例如,如果我们希望当用户被删除时,所有相关的...

    10_JPA详解_JPA中的一对多双向关联与级联操作.zip

    本资料包"10_JPA详解_JPA中的一对多双向关联与级联操作.zip"聚焦于JPA中的一个重要概念——一对多双向关联及其级联操作。以下是对这一主题的详细阐述。 **一对多关联** 在关系数据库设计中,一对多关联是最常见的...

    JPA中的多对多双向关联实体定义与注解设置

    通过这种方式,JPA会自动处理中间表的更新,无需手动操作SQL。 总结来说,JPA中的多对多双向关联实体定义涉及`@ManyToMany`、`@JoinTable`以及`mappedBy`等注解的使用。正确配置这些注解可以让我们轻松地管理实体...

    spring jpa操作数据库 级联数据 hibernate

    本主题主要围绕"spring jpa操作数据库 级联数据 hibernate"展开,探讨如何利用Spring JPA进行数据库交互,并涉及到级联操作和与Hibernate的集成。 Spring JPA是Spring对Java Persistence API的一个封装,它提供了...

    jpa例子jpajpa

    7. **级联操作(Cascading)**: 通过`@Cascade`注解,可以设置一个操作(如保存、删除)对关联实体的影响。例如,父实体删除时,其子实体也可以被一同删除。 8. **多态性(Polymorphism)**: JPA支持继承和多态性,...

    spring data jpa 动态更新@DynamicUpdate

    `@DynamicUpdate`是一个JPA提供的特性,用于优化数据更新操作,尤其是在大型项目中,可以显著减少不必要的字段更新,从而提升数据库操作的性能。 标题“spring data jpa 动态更新@DynamicUpdate”指出了这个知识点...

    Hibernate JPA

    - `hibernate.hbm2ddl.auto`: 配置数据库模式的自动创建或更新策略。 - `hibernate.jdbc.fetch_size` 和 `hibernate.jdbc.batch_size`: 调整JDBC抓取和批处理的数量。 - `hibernate.show_sql` 和 `hibernate....

    10_传智播客JPA详解_JPA中的一对多双向关联与级联操作

    本教程将深入探讨JPA中的一对多双向关联及级联操作,这对于理解和使用JPA进行复杂数据模型管理至关重要。 首先,我们来理解一下一对多关联。在数据库设计中,一对多关联是指一个实体(表)可以与多个其他实体相关联...

    MySQL使用外键实现级联删除与更新的方法

    `CASCADE`表示级联操作,即删除或更新主表记录时,相应的子表记录也会被删除或更新。`RESTRICT`或`NO ACTION`则阻止在子表有相关记录时删除或更新主表记录,而`SET NULL`会在主表记录被删除或更新时,将子表对应字段...

    JPA详解视频教程 第10讲 JPA中的一对多双向关联与级联操作.avi

    JPA用于整合现有的ORM技术,可以简化现有Java EE和Java SE应用对象持久化的开发工作,实现ORM的统一。JPA详解视频教程 第10讲 JPA中的一对多双向关联与级联操作.avi

    07_传智播客JPA详解_使用JPA加载_更新_删除对象

    此外,JPA还支持级联操作,例如在一对多或多对多的关系中,可以通过`@OneToMany`和`@ManyToMany`注解配置级联保存或删除。这样,当父对象被保存或删除时,其关联的子对象也会相应地进行操作。 在事务管理方面,JPA...

    实体Bean之间的级联关系

    实体Bean之间的级联关系是Java持久化框架如Hibernate或JPA中的一个重要概念,它涉及到对象关系映射(ORM)中的数据操作同步性。在数据库中,实体Bean通常代表表中的行,而实体间的级联关系则反映了表之间的关联。...

    jpa实现数据库操作

    - JPA支持乐观锁,通过@Version注解实现,检查更新时的版本号,防止并发冲突。 以上内容涵盖了JPA实现数据库操作的基础知识,随着项目的深入,你可能需要学习更多关于Spring与JPA集成的内容,包括Spring Boot、...

    jpa

    **JPA(Java Persistence API)**是Java平台上用于管理关系数据库的数据持久化标准API,它为应用程序提供了一种对象/关系映射工具,将关系数据库中的数据与Java类对象关联起来,使得开发者可以使用面向对象的方式来...

    JPA源文件/jpa学习

    通过阅读和研究JPA的源代码,开发者可以了解到JPA如何处理实体的生命周期,如加载、保存、更新和删除,以及如何执行JPQL查询和Criteria查询。此外,还可以了解JPA如何与不同的持久化提供者(如Hibernate、Eclipse...

    优秀实践分享 Spring Data JPA2

    本文是介绍Spring-data-jpa的PPT的学习笔记,整理...JPA API 条件查询 (子查询,多表连接查询) JPA结合QueryDSL轻松完成复杂查询(自连接,多表连接查询) 参与文档: Pro JPA2中文版:精通Java持久化API 优秀博文读书笔记: ...

    java级联查询、分页查询

    在Java编程中,级联查询和分页查询是数据库操作中的常见需求,特别是在处理大量数据时。级联查询用于获取一个实体的相关实体信息,而分页查询则用于提高查询效率和用户体验,避免一次性加载过多数据导致性能下降。...

    11_JPA详解_JPA中的一对多延迟加载与关系维护.zip

    JPA提供了一种方式来方便地管理和维护这种关系,包括添加、删除子实体,以及在保存或更新父实体时自动同步子实体的状态。 **延迟加载** 延迟加载(Lazy Loading)是JPA提供的一个性能优化策略。默认情况下,当一个...

Global site tag (gtag.js) - Google Analytics