私はレガシーシステムで作業しており、以下のようないくつかの機能を実装する必要があります。 テーブルはマネージャと部門で、マネージャは複数の部門を持つことができますが、部門にはマネージャが1つしかありません。1対多マッピング双方向のデータ
マネージャー
- MANAGER_ID。 - >主キー。
- manager_name。
- department_id。
部門
- DEPT_ID。 - >主キー。
- dept_name。
- manager_id。これは、Managerのテーブルへの参照です。
これらのテーブルには、外部キーやその他の制約はありません。
私の実装は でした。私はDepartmentテーブルの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ください。
- Get: /managers:各マネージャの部門リストと共にマネージャを返します。 /managers/id:部門リストを持つマネージャを返します。
- 削除: /managers:マネージャとそれに関連付けられているすべてのマネージャを削除します。
ポスト(追加):他のすべてがnullに設定されて順次生成された管理者IDを除き
。ログを調べると、最初に挿入が呼び出され、Managerテーブルで更新されます。私はすべてのプロパティにnull動作を引き起こしていると思います。また、部門表が挿入されていません。
:私は、挿入のために渡さ JSONデータと同様であった{ "managerName": "ジョン" [{ "DEPTNAME": "販売" }] }
注:私のコントローラには、null動作を引き起こした値を正確に渡さなかったいくつかの問題がありました。
コントローラで何らかの問題が発生したため、Nullが発生しました。しかし、私はそれも問題であったと思うし、今は魅力のように動作します。 – Madstuffs