假设我们有以下实体:
@Entity
    public class Department {

        @OnetoMany(mappedBy="department")
        private List<Employee> employees;
    }

    @Entity
    public class Employee {

        @ManyToOne
        private Department department
    }

在更新时可以理解,我们需要保持关系的双方如下:

Employee emp = new Employee();
Department dep = new Department();
emp.setDepartment(dep);
dep.getEmployees().add(emp);

一切都好,直到现在.问题是我应该如下应用合并,我避免了第二次合并一个级联?

entityManager.merge(emp);
entityManager.merge(dep);

还是把所有方面合并得足够?这些合并还会发生在事务或EJB内吗?或者用一个简单的控制器方法用独立的实体做足够的?

解决方法

The question is should I apply merge on both sides as follows,and an I avoid the second merge with a cascade?

您可以使用级联注释元素将操作的效果传播到关联实体.级联功能最常用于父子关系.

如果这些关系已经使用级联元素值cascade = MERGE或cascade = ALL注释注释,则将合并操作级联到由Department关系引用的实体.

管理实体之间的双向关系将根据关系所有者(员工)所持有的参考资料而持续存在.开发人员有责任保留内部存在的参考资料(Employee),而持有的内部参与者(Department)在变更时相互保持一致.所以,使用下面的一系列语句,这个关系将通过一个合并与数据库同步:

Employee emp = new Employee();
Department dep = new Department();
emp.setDepartment(dep);
dep.getEmployees().add(emp);
...
entityManager.merge(dep);

这些更改将在事务提交时传播到数据库.当事务通过使用EntityManager#flush方法处于活动状态时,实体的内存状态也可以在其他时间同步到数据库.

java – JPA更新双向关联的更多相关文章

  1. 在Android Studio上构建失败

    将所有Google支持库更新到最新版本后,我的项目不再成功构建.我得到的日志如下:我已经尝试将库恢复到早期版本,但仍然出现相同的错误.有没有人建议如何解决这个问题?解决方法Play服务是一个很大的库,有成千上万的方法可以满足你的dex限制.更好地用您需要的部件替换播放服务导入.从6.5版开始,您可以选择性地将GooglePlay服务API编译到您的应用中.

  2. 为什么会这样?我该如何解决? Android:意外的顶级例外:

    参见英文答案>Weird:UNEXPECTEDTOP-LEVELEXCEPTION:Executionfailedfortaskapp:dexDebug4个意外的顶级例外:com.android.dex.DexIndexOverflowException:方法ID不在[0,0xffff]中:65536错误:任务’:app:dexDebug’的执行失败.com.android.ide.common.

  3. android studio,gradle dex失败了

    我正在尝试使用gradle构建我的android项目,但我一直在收到这条失败的消息,我真的可以理解,当我不使用gradle时,一切都工作顺利,我做错了什么?解决方法你的项目太大了.你有太多的方法.每个应用程序只能有65536个方法.尝试减少不必要的方法或将Android支持库更新为21版

  4. Android Studio模拟器错误 – 以非零退出值2结束

    所以我有一个应用程序,我一直在开发/测试一下,并没有任何问题,将它加载到我的手机上进行调试.有一天不知从哪里开始投掷和错误,不会再让我运行模拟器了.错误如下:com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:Process‘command‘C:\ProgramFiles

  5. Spring Data JPA系列JpaSpecificationExecutor用法详解

    这篇文章主要为大家介绍了Spring Data JPA系列JpaSpecificationExecutor用法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  6. Spring Boot 整合持久层之Spring Data JPA

    在介绍Spring Data JPA的时候,我们首先认识下Hibernate。Hibernate是数据访问解决技术的绝对霸主,使用O/R映射技术实现数据访问,O/R映射即将领域模型类和数据库的表进行映射,通过程序操作对象而实现表数据操作的能力,让数据访问操作无须关注数据库相关的技术

  7. cascade级联关系操作案例详解

    这篇文章主要介绍了cascade级联关系,主要包括级联保存,级联修改,级联删除案例,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下

  8. 使用JPA插入枚举类型字段

    这篇文章主要介绍了使用JPA插入枚举类型字段,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  9. 使用JPA单项一对多外键关联

    这篇文章主要介绍了使用JPA单项一对多外键关联,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  10. 使用spring jpa 如何给外键赋值

    这篇文章主要介绍了使用spring jpa 如何给外键赋值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部