2017-06-05 23 views
1

我有兩個實體僱員和工資,我希望我的工資實體應該在僱員實體角色屬性發生變化時更新。 僱員實體: emp_id爲 名 角色 工資實體: ID emp_id爲 SalarySlab如何在彈簧數據中觸發實體更新?

我需要每當有員工角色的任何變化來自動更新薪水板。 我不能得到正確的做法,春季數據/ JPA

+0

如果您的薪水取決於角色,那麼薪金應該是角色而不是員工的一部分。如果你的薪水是一個計算字段,它不應該在數據庫中,而是來自計算的字段或服務。 – Snickers3192

+0

@ Snickers3192角色是員工實體的字段。我還需要從員工表中評估其他一些領域,並且想要在員工表上更新時更新我的​​薪水錶 – aks

+0

我只是說您的數據庫中不應包含任何計算字段。 – Snickers3192

回答

0

實現這個我假設你已經EmployeeSalary之間的關係@OneToOne,所以你Employee實體有工資場註解正常。例如:

@OneToOne(mappedBy="employee") 
private Salary salary; 

更多關於實體關係映射here

最簡單的解決方案是,您必須將此邏輯放在角色設置器中。例如:

void setRole(Role newRole) { 
    this.role = newRole; 
    updateSalary(); 
} 

void updateSalary() { ... } 

如果您有這方面沒有setter方法 - 我不會推薦 - 您可以使用JPA的@PrePersist和​​註解。例如:

@PrePersist 
@PreUpdate 
public void updateSalary() { ... } 

這樣updateSalary都會被調用一次春天創建一個新的Employee實體或更新現有的一個。更多關於生命週期回調的休眠實現here

相關問題