如何从关系中删除子对象或父对象?

我做了一个具有更多关系的小型应用程序。现在,我想删除表格的详细信息,如何删除我没有删除任何想法。

关系如下:

PanCard->员工(Ono To One)

Employee-> ProjectManger(与员工的双向多对一关联)

项目-> ProjectManager(与项目的双向多对一关联)

现在我要删除一张一张的表数据

以下是我的POJO类代码:

回答:

  @Id

@GeneratedValue(strategy=GenerationType.IDENTITY)

@Column(name="id")

private int id;

@Column(name="pName")

private String pName;

@Column(name="pNumber")

private int pNumber;

@OneToOne(cascade=CascadeType.ALL,fetch=FetchType.EAGER)

@JoinColumn(name="EId")

private Employee employee;

回答:

@Id

@GeneratedValue(strategy=GenerationType.IDENTITY)

@Column(name = "id")

private int id;

@Column(name = "empFirstName")

private String empFirstName;

@Column(name = "empLastName")

private String empLastName;

@Column(name = "empDepartment")

private String empDepartment;

@ManyToOne(cascade=CascadeType.ALL, fetch=FetchType.EAGER)

@JoinColumn(name="pmId")

private ProjectManager projectManager;

回答:

@Id

@GeneratedValue(strategy=GenerationType.IDENTITY)

private int id;

private String department;

private String managerFirstName;

private String managerLastName;

//bi-directional many-to-one association to Myemployee

@OneToMany(mappedBy="projectManager",cascade = CascadeType.ALL)

private List<Employee> employee;

@OneToMany(mappedBy="projectManager",cascade = CascadeType.ALL)

private List<Projects> projects;

回答:

 @Id

@GeneratedValue(strategy=GenerationType.IDENTITY)

@Column(name="id")

private int id;

@Column(name="projectName")

private String projectName;

@Column(name="projectDesc")

private String projectDesc;

@ManyToOne(cascade=CascadeType.ALL, fetch=FetchType.EAGER)

@JoinColumn(name="pmId")

private ProjectManager projectManager;

现在,我要删除表数据:应该从哪个表开始删除。

  • 如果我要删除,Pancard我应该删除,ProjectManager因为Employee有FK。
  • 如果我想删除ProjectManager它,则应删除Employee和,ProjectsEmployeePanCard它有关系,因此不要删除。
  • 如果我要删除Projects,则应删除ProjectManagerProjectManger与之相关联,Employee因此不删除。

因此,我必须从哪里开始删除,以及如何删除不知道的对象。

回答:

您可以开始从任何喜欢的表中删除。但是,如果要为此使用JPA,则必须防止约束冲突。您可以通过

  • 从拥有方删除,或
  • 取消拥有实体上的外键,然后从反面删除。

要阐明关系映射:

  • PanCard是与的关系的拥有一方Employee
  • Employee是与的关系的拥有一方ProjectManager
  • Project是与的关系的拥有方面ProjectManager

一般建议-不要从多方面使用级联。结果大多不是您想要的-

违反约束。如果删除Employee,则删除内容将级联到ProjectManager。由于一个经理可以有多个雇员,因此Employee将违反表中的外键约束。所以我会从删除级联EmployeeProjectManager

以上是 如何从关系中删除子对象或父对象? 的全部内容, 来源链接: utcz.com/qa/422631.html

回到顶部