JPA与同一实体的关系

时间:2014-04-21 05:39:43

标签: java sql jpa

我使用MYSQL,我有员工表,包含

Employee {
     id, 
     name, 
     tel, 
     dayOfBirth, 
     manager_id
} 

并且管理器引用了employee id,manager_id和id之间存在数据库关系

我创建了实体类,并按如下方式放置关系:

@ManyToOne(cascade = CascadeType.REFRESH, optional = false, fetch = FetchType.EAGER)
@JoinColumn(name="manager_id", nullable=true,insertable=false,updatable=true)
private Employee manager;

如果他有员工,我需要阻止删除经理。

请帮助你。

2 个答案:

答案 0 :(得分:1)

主要方法是在SQL架构中添加限制。

PRIMARY KEY (ID) ,
FOREIGN KEY (MANAGER_ID) REFERENCES EMPLOYEE(ID) 
ON DELETE NO ACTION ON UPDATE NO ACTION

在JPA中,您可以使用@PreDestroy

进行检查
public class Employee {

@PreDestory
public void preDestroy()
   ( !getEmployees().isEmpty()) {
     // handle it
   }
 }
}

答案 1 :(得分:0)

我有解决方案,将引擎指定为innodb的解决方案如下:

ENGINE = INNODB

全部谢谢