0
私のコードでは、updateメソッドはおそらくnullを返し、このメソッドを呼び出すトランザクションに影響します。Springデータ:更新でnullが返されるとトランザクションがロールバックされます
実行時例外をスローするか、ユーザーがチェック例外を指定するだけでロールバックアクションがトリガーされるので、nullが返されてもトリガーされます。
サービス1
public class Service1 {
@Autowired
private Service2 service2;
@Autowried
private Service1Repository service1Repository;
@Transactional
public Entity1 update(Entity1 entity) {
service1Repository.update(entity);
// if this method return null, above update will rollback. Otherwise, it will be executed success.
service2.update(entity.getId());
return entity;
}
}
サービス2:
public class Service2 {
@Autowired
private Service2Repository service2Repository;
@Transactional
public Entity2 update(Integer id) {
Entity2 entity = service2Repository.findOne(id);
// No need to update HIDDEN status entity
if (Status.HIDDEN.equals(entity.getStatus())) {
return null;
}
entity.setOtherAttribute("xyz");
service2Repository.update(entity);
return entity;
}
}
はい、私もそうだと思いますが、これは実際に私のコードで起こったので、この状況は重複しないようにしたいだけです。 – sgyyz
コードで期待どおりに動作しませんでしたか? – lzagkaretos
私のService2update()が実行されると、Service1.update()はデータを更新しません。 service1Repository.update()はデータをロールバックします。 – sgyyz