У меня есть метод Service method - SampleServiceImpl ().Я объявил метод Service следующим образом:
@Transactional
@Override
public sampleDTO SampleServiceImpl(SampleDTO sampleDTO) throws SampleException, ParseException {
// Method call to methodA.
createDataA(sampleDTO);
// Method call to methodB.
createDataB(sampleDTO);
return sampleDTO ;
}
Здесь создается DataA, и он не выдает никаких исключений.Но в DataB мы пытаемся создать DataB на основе DataA.Из-за некоторой логики мы не можем создать DataB.Таким образом, мы генерируем исключение образца, например:
count = checkIfDataBExisting(sampleDTO);
if(count == 1){
throw new SampleException(ErrorConstants.DATA_B_EXISTING);
}
Но проблема в том, что транзакция, которая была зафиксирована во время createDataA (sampleDTO) вызова метода, не откатывается назад.
Почему это на самом деле не работает?Я немного запутался с этим поведением.
РЕДАКТИРОВАНИЕ: 1
метод createData1 (sampleDTO) -
private ADTO createDataA(SampleDTO sampleDTO) throws SampleException{
ADTO aDTO = null;
try {
//CREATE NEW WORK DRIVER
aDTO = createNewDataA(sampleDTO);
//Other arbitary database transactions occurs after creation of AData.
} catch (SampleException exc) {
SampleException newException = new SampleException (exc.getExceptionObject().getExceptionCode(), exc);
throw newException ;
}
return aDTO;
}
РЕДАКТИРОВАНИЕ 2:
Декларация SampleException -
public class SampleException extends Exception{
//Definitions and Declarations.
}