一对多关系支持阅读但不插入

时间:2019-01-22 13:24:12

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

我正在使用Spring Boot(2.1.1版)创建一个需要以下需求的两个模型类之间一对多和多对一关系的应用程序

模型类是

@Entity
@Table(name="ORGANIZATIONS")
public class Organization{

    @Id
    @GeneratedValue
    Private long id;

    @Column(unique=true)
    Private String name;
}

@Entity
@Table(name="DEPARTMENTS")
Public class Department{

   @Id
   @GeneratedValue
   Private long id;

   @Column(unique=true)
   Private String name;


//…

}

要求

  1. 两个组织和部门均应由各自独立的rest api创建。
    • 通过POST / organizations api,我们应该能够创建一个组织,而无需在同一api调用中创建部门。实际上,该api应该失败,因为我尝试将部门的json元素作为POST / organizations调用的一部分传递。
    • 在致电POST /部门时,我应该能够传递组织ID以将新创建​​的部门与组织相关联。
  2. GET / organizations api调用应将Collection作为组织对象的一部分返回

问题是

  1. 如何关联两个模型对象?是否在组织中添加@OneToMany?我将哪些属性传递给@OneToMany?我是否需要在部门另一侧使用类似的@ManyToOne?

  2. 我在REST控制器上是否需要任何特殊注意事项?

1 个答案:

答案 0 :(得分:1)

您仅需要@ManyToOne来保留在Department中,但很可能需要@OneToMany中的Organization来进行GET请求。

在保存部门时,只需确保您需要:

  • 从db获取组织
  • 在部门对象上设置获取的组织
  • 将部门添加到Organization.departments列表中
  • 坚持部门

对于错误处理,请返回BAD_REQUEST响应:

return new ResponseEntity<>(HttpStatus.BAD_REQUEST);