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

2023-12-10

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

关系如下:

泛卡-->员工(一对一)

员工-->项目经理(与员工双向多对一关联)

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

现在我想把表数据一一删除

下面是我的 POJO 类代码:

PanCard.java

  @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;

员工.java

@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;

项目管理器.java

@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;

项目.java

 @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 and Projects but Employee有关系与PanCard所以并不是删除。
  • 如果我想删除Projects它应该删除ProjectManager but ProjectManger有关系与Employee所以并不是删除。

所以我必须从哪里开始删除以及如何删除我不知道。


您可以开始从任何您喜欢的表中删除。但是,如果您想为此使用 JPA,则必须防止违反约束。你可以通过以下任一方式做到这一点

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

澄清关系映射:

  • PanCard是关系的拥有方Employee.
  • Employee是关系的拥有方ProjectManager.
  • Project是关系的拥有方ProjectManager.

一般建议 - 不要从多方使用级联。结果大多不是您想要的——违反约束。如果您删除一个Employee,移除被级联到ProjectManager。由于经理可以拥有多名员工,因此外键约束Employee表将被违反。所以我会从中删除级联Employee to ProjectManager.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从关系中删除子对象或父对象? 的相关文章

随机推荐