我正在执行一项任务,因为我必须插入并做更新,但记录不存在。当处理单个数据源时,Spring数据jpa的当前功能很好,但是我有多个数据源。
1) for reading and
2) for update and delete.
我想选择要从只读服务器而不是主服务器上执行的语句,这可以实现我已经完成的单独jpa存储库。
但是在主服务器存储库上调用save()时会出现问题。 Save()在主数据库服务器上同时产生select和update / insert。
我了解了Persistable接口,并已实现并将isNew设置为false,当我确定要执行更新时,请不要插入,但仍要在更新前在主服务器上触发Spring data jpa fire select语句。
到目前为止所做的努力
public class Employee implements Persistable<String> {
@Id
@Column(name = "emp_no")
private String empNo;
@Column(name = "name")
private String name;
@Transient
private boolean isNew = false;
public String getEmpNo() {
return empNo;
}
public void setEmpNo(String empNo) {
this.empNo = empNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String getId() {
return empNo;
}
@Override
public boolean isNew() {
return isNew;
}
public void setNew(boolean isNew) {
this.isNew = isNew;
}
}
请向我建议有效的解决方案,以便我可以避免使用或调用另一个数据源中的select。
我也尝试过此解决方案,该解决方案在不同站点的答案之一中发布。
@DynamicUpdate(value=false)
@SelectBeforeUpdate(value=false)