【问题标题】:Spring Data JPA: Why does saving this entity work as intended (i.e. parent is thankfully not overwritten)?Spring Data JPA:为什么保存这个实体会按预期工作(即,谢天谢地,父级没有被覆盖)?
【发布时间】:2017-03-23 21:20:06
【问题描述】:

我一直在关注 Youtube 上的 Spring Boot 快速入门教程。

在播放列表中的这个特定的video 上,我发现了一些非常奇特的东西。

来自 CourseController.java 的片段

    @RequestMapping(method=RequestMethod.POST, value="/topics/{topicId}/courses")
public void addCourse(@RequestBody Course course, @PathVariable String topicId){
    course.setTopic(new Topic(topicId,"",""));
    courseService.addCourse(course);
}

来自 CourseService.java 的片段

    public void addCourse(Course Course){
    coursesRepository.save(Course);
}

起初,我认为这种方法会进一步改变,因为我怀疑它在这种状态下是否有效。

但是,当我运行应用程序时,一切都很好(即新的 Course 实体对象成功地作为现有 Topic 实体对象的父级),即使该方法与我发布的内容保持不变。

我想问一下,为什么父实体 Topic 的现有值没有像我最初假设的那样被覆盖?

我已经查阅了 Hibernate 文档和 Spring Data JPA 文档,但找不到直接解释为什么数据库没有发生意外操作的原因。

【问题讨论】:

    标签: java spring hibernate spring-boot spring-data-jpa


    【解决方案1】:

    好吧,事实证明这是@ManyToOne 的级联操作。

    只要我不在注解中设置级联参数,就不会产生不良的副作用。

    【讨论】:

      猜你喜欢
      • 2016-10-11
      • 2018-07-17
      • 1970-01-01
      • 2022-10-14
      • 1970-01-01
      • 2018-06-25
      • 1970-01-01
      • 2020-07-24
      • 2011-11-20
      相关资源
      最近更新 更多