5 java hibernate jpa one-to-one many-to-one
我做了一个有更多关系的小应用程序。现在我想删除我的表的详细信息我该如何删除我没有任何要删除的想法。
关系如下:
PanCard-->员工(小野一一)
Employee-->ProjectManger(与Employee的双向多对一关联)
项目-->项目管理器(与项目的双向多对一关联)
现在我想把表数据一一删除
下面是我的 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;
Run Code Online (Sandbox Code Playgroud)
@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;
Run Code Online (Sandbox Code Playgroud)
@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;
Run Code Online (Sandbox Code Playgroud)
@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;
Run Code Online (Sandbox Code Playgroud)
现在我想删除表数据:我应该从哪个表开始删除。
Pancard
我应该删除,ProjectManager
因为Employee
有FK。ProjectManager
它应该删除Employee
andProjects
但Employee
与有关系PanCard
所以它不删除。Projects
它应该删除ProjectManager
但ProjectManger
与有关系Employee
所以它不是删除。所以我必须从哪里开始删除以及如何删除我不知道。
您可以开始从任何您喜欢的表中删除。但是,如果您想为此使用 JPA,则必须防止违反约束。你可以通过以下任一方式做到这一点
澄清关系映射:
PanCard
是与 的关系的拥有方Employee
。Employee
是与 的关系的拥有方ProjectManager
。Project
是与 的关系的拥有方ProjectManager
。一般建议 - 不要从多方使用级联。结果大多不是您想要的——违反约束。如果删除Employee
,删除操作会级联到ProjectManager
。由于经理可以拥有多名员工,因此Employee
会违反表中的外键约束。Employee
所以我会删除从到 的级联ProjectManager
。
归档时间: |
|
查看次数: |
13513 次 |
最近记录: |