我正在使用旧版系统,并且必须实现一些与以下问题类似的功能。表是经理和部门,其中一个经理可以有多个部门,但一个部门只有一个经理。
经理
部门
这些表上没有外键或其他约束。
我的实现是“一对多双向”,因为我在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。
帖子(添加):
除了按顺序生成的Manager ID之外,其他所有内容均设置为null。当我查看日志时,它首先调用insert,然后在Manager表上进行更新。我猜更新导致其所有属性为空行为。此外,部门表未插入。我传递用于插入的JSON数据类似于:
{“ managerName”:“ John” [{“ deptName”:“ Sales”}]}
注意:我的控制器存在一些问题,该问题未能正确传递值,从而导致了空行为。
在Manager中更改部门初始化,分配一个空的HashSet。
@OneToMany(mappedBy = "managers", cascade = CascadeType.ALL)
@JsonManagedReference
private Set<Department> departments=new HashSet<Department>();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句