同一会话中的Spring jpa事务不工作

同一会话中的Spring jpa事务不工作,spring,hibernate,jpa,transactions,spring-jdbc,Spring,Hibernate,Jpa,Transactions,Spring Jdbc,这是我的代码示例 saveClaim(){ Claim claim = new Claim(); claim.setId(1); claim.setName("Jhon"); claim.valid(true); myrepo.save(claim); //first transaction boolean response = callAnotherMicroservice(claim); if(resp){ claim.accepted(true); myrepo.save(claim);/

这是我的代码示例

saveClaim(){
Claim claim = new Claim();
claim.setId(1);
claim.setName("Jhon");
claim.valid(true);
myrepo.save(claim); //first transaction
boolean response = callAnotherMicroservice(claim);
if(resp){
claim.accepted(true);
myrepo.save(claim);//third transaction 
}

# Microservice in different server
callAnotherMicroservice(claim){
    boolean resp=false;
    if(some condition check){//returns true and claim table is updated
    claim.valid(false);
    myrepo.save(claim);//second transaction
    resp = true;
    }
    return resp;
} 

即使我通过另一个微服务在call中更新索赔表。在我的第三个事务中,有效列被重写为true。myrepo是一个扩展JpaRepository的接口。

从逻辑上讲,这是正确的,在第二次交易后,您不会将valid重置为任何其他状态,第5行设置为valid value的内容将保持为true,并使用第三个txn提交。在第二次txn之后相应地设置有效状态,以获得所需的结果。在第二次事务之后,有效状态设置为false。但在第三次传输后,它会被覆盖。这是因为您创建了claim并将claim.valid(true)设置为true,之后再也不会重置。使用第二个事务保存/更新同一个claim对象我很确定,如果条件块修改如下,那么逻辑将起作用:if(resp){claim.valid(false);claim.accepted(true);myrepo.save(claim);//third transaction}