私は複数のテーブルにデータを挿入する必要があるシナリオがあります。 1つのクエリが失敗した場合、私は私のサービスメソッドは、私が最初の挿入が実行され、第2の挿入が失敗した場合、最初の挿入はロールバックし、最初の挿入が失敗した場合になりたい春のデータ一貫性を維持する
@Service
@Transactional
public class ServiceNameImpl implements ServiceName{
@Autowired
private ABCRepository abcRepository;
@Autowired
private BCDRepository bcdRepository;
@Override
public SChResource save(SchData schData){
SchSch sch = new SchSch();
Contact con = new Contact();
sch.setName(schData.getName());
abcRepository.save(sch); --first insertion
con.setAddress(schData.getAddress());
bcdRepository.save(con); --second insertion
return null;
}
}
で最後に実行されたクエリ
をロールバックしたいです2回目の挿入が実行され、2回目の挿入がロールバックされます。
私は何をすべきか教えてください。
'save()'メソッドをトランザクションにしたいようです。 – Kayaman
これはあなたのサービスが '@ Transactional'で動作するはずです。動作していなければ、この質問にはあなたの質問に答えるための情報がありません。 –
@M。 Deinum私は@Transaction(readOnly = true)または@Transactional(readOnly = false)を使用する必要があると混同しています。このサービスクラスにはトランザクションを行いたくない他のメソッドがあるので、 – ankit