一对多关系支持读取,但不支持INSERTS



我正在使用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应该会失败,我试图将department的json元素作为POST/organizations调用的一部分传递给department
    • 当调用POST/departments时,我应该能够传递组织id,将新创建的部门与组织关联起来
  2. GET/organizations api调用应将Collection作为组织对象的一部分返回

问题是

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

  2. 我需要对REST控制器进行任何特殊考虑吗?

您只需要@ManyToOne来持久化Department,但很可能需要Organization中的@OneToMany来执行GET请求。

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

  • 从数据库获取组织
  • 在部门对象上设置提取的组织
  • 将部门添加到Organization.dedepartments列表
  • 坚持部门

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

return new ResponseEntity<>(HttpStatus.BAD_REQUEST);

最新更新