0
我正在使用遺留系統,並且必須實現一些類似於以下問題的功能。 表是經理和部門,經理可以有多個部門,但部門只有一個經理。春季數據一對多映射雙向
經理
- 經理標識。 - >主鍵。
- manager_name。
- department_id。
部
- 的dept_id。 - >主鍵。
- dept_name。
- manager_id。這是對經理人表格的參考。
這些表上沒有外鍵或其他約束。
我的實現是, 一對多雙向,因爲我在部門表中也有manager_id。
我的代碼片段:
@Entity
@Table(name = "Manager_T")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class Manager {
@Id
@SequenceGenerator(name = "manager_id", sequenceName = "manager_id", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "manager_id")
@Column(name="manager_id")
private Long managerId;
@Column(name="manager_name")
private String managerName;
@OneToMany(mappedBy = "managers", cascade = CascadeType.ALL)
@JsonManagedReference
private Set<Department> departments;
}
部門實體:
@Entity
@Table(name="Department_T")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class Department {
@Id
@SequenceGenerator(name = "dept_id", sequenceName = "dept_id", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "dept_id")
@Column(name="dept_id")
private Long deptId;
@Column(name="dept_name")
private String deptName;
// Only those departments for which manager exists.
@ManyToOne(optional=false)
@JoinColumn(name="manager_id")
@JsonBackReference
private Manager manager;
}
輸出:對於ManagerController。
- 得到: /經理:返回經理以及每個經理的部門名單。 /managers/id:返回一個經理及其部門名單。
- 刪除: /管理員:刪除管理器及其關聯的所有部門。
郵報(添加):
除了將順序產生的其他一切都被設置爲null經理ID。當我查看日誌時,它首先調用插入,然後在管理器表上更新。我猜更新是導致其所有屬性的空行爲。此外,部門表沒有被插入。其中我通過用於插入 JSON數據是類似於:
{ 「managerName」: 「約翰」 [{ 「DEPTNAME」: 「銷售」 }] }
注意:我的控制器出現了一些問題,它沒有正確傳遞導致null行爲的值。
空行爲是由於我的控制器中的某些問題而引起的。但我想這也是一個問題,現在它就像一個魅力。 – Madstuffs