2014-04-21 88 views
1

我使用MySQL,我有職員表,包含JPA關係與同一實體

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

和員工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; 

我需要防止刪除經理,如果他擁有員工。

請你幫忙。

+0

可能這是你在問什麼? http://stackoverflow.com/questions/21192536/jpa-check-if-entity-can-be-deleted –

回答

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 
    } 
} 
} 
+0

謝謝,我已經嘗試添加該行(ON DELETE NO ACTION),那麼(ON DELETE限制)但同樣:(我也試圖插入和刪除直接從數據庫並得到相同的。也許有一個參數,我必須通過啓用限制? – Hazim

0

我已經得到了解決檢查此,該解決方案以指定引擎InnoDB的如下:

ENGINE = INNODB

謝謝所有