如何从关系中删除子对象或父对象?
我做了一个具有更多关系的小型应用程序。现在,我想删除表格的详细信息,如何删除我没有删除任何想法。
关系如下:
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和,Projects但Employee与PanCard它有关系,因此不要删除。 - 如果我要删除
Projects,则应删除ProjectManager但ProjectManger与之相关联,Employee因此不删除。 
因此,我必须从哪里开始删除,以及如何删除不知道的对象。
回答:
您可以开始从任何喜欢的表中删除。但是,如果要为此使用JPA,则必须防止约束冲突。您可以通过
- 从拥有方删除,或
 - 取消拥有实体上的外键,然后从反面删除。
 
要阐明关系映射:
PanCard是与的关系的拥有一方Employee。Employee是与的关系的拥有一方ProjectManager。Project是与的关系的拥有方面ProjectManager。
一般建议-不要从多方面使用级联。结果大多不是您想要的-
违反约束。如果删除Employee,则删除内容将级联到ProjectManager。由于一个经理可以有多个雇员,因此Employee将违反表中的外键约束。所以我会从删除级联Employee到ProjectManager。
以上是 如何从关系中删除子对象或父对象? 的全部内容, 来源链接: utcz.com/qa/422631.html

