如何在spring数据中触发实体更新?

时间:2017-06-05 06:29:51

标签: spring spring-mvc jpa spring-data

我有两个实体员工和工资,我希望每当员工实体角色属性发生变化时我的工资实体都会更新。 员工实体: EMP_ID 名称 角色 薪资实体: ID EMP_ID SalarySlab

每当员工角色发生任何变化时,我都需要自动更新工资单。 我无法在spring data / jpa

中获得正确的方法

1 个答案:

答案 0 :(得分:0)

我假设您在@OneToOneEmployee之间存在Salary关系,因此您的Employee实体已正确注释薪水字段。例如:

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

有关实体关系映射的更多信息here

最简单的解决方案是您必须将此逻辑放在角色设置器中。例如:

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

void updateSalary() { ... }

如果您没有该字段的setter方法 - 我不建议这样做 - 您可以使用JPA的@PrePersist@PreUpdate注释。例如:

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

这种方式updateSalary将在每次spring创建新Employee实体或更新现有实体时调用。有关生命周期回调的更多信息' hibernate实现here