Spring Data JPA保存同时产生选择和更新,如何在调用save()函数时避免选择

时间:2019-05-09 12:25:06

标签: spring hibernate spring-boot spring-mvc spring-data-jpa

我正在执行一项任务,因为我必须插入并做更新,但记录不存在。当处理单个数据源时,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)

0 个答案:

没有答案