#java #spring-boot #jpa #transactions #rollback
#java #весенняя загрузка #jpa #транзакции #Откат
Вопрос:
У меня есть метод, аннотированный с помощью @Transactional(откат для = CustomerRollBackException.class ) и он работает так, как ожидалось, когда я тестирую его в embebed tomcat. Тем не менее, я развернул его на jboss wildfly, и тот же метод не выполняет откат при возникновении исключения.. Есть ли у вас какие-либо идеи, нужна ли какая-либо конфигурация на jboss?
@Override
@Transactional(rollbackFor = CustomerRollBackException.class)
public void importGenericTable(SheetDTO sheetDTO) throws Exception {
// String tableName, List<Object> rows, UserDTO user
Iterator iterator;
String tableName = sheetDTO.getTableName();
....
try{
..
} catch (ParseException | PersistenceException | SQLGrammarException | ConstraintViolationException e) {
logger.error("importGenericTable. Error " e);
throw new CustomerRollBackException("E_NPRO_UTIL_IMPORT_0001:" (countRows 2));
} catch (CustomerNotFoundException e) {
throw new CustomerRollBackException(e.getMessage());
} catch (Exception e) {
throw new CustomerRollBackException("error desconocido");
}
..
Он вводится в первый catch и вызывает исключение CustomerRollBackException, и откат не выполняется.
Ответ №1:
Я думаю, что с jboss вы должны использовать rollbackOn вместо этого
Комментарии:
1. Откат на
2. Используете ли вы @javax.transaction. Транзакционный
Ответ №2:
Решение: настройте источник данных на jboss и используйте его в приложении, используя spring.datasource.jndi-name=java:/XXXX вместо :
spring.datasource.url= jdbc:
spring.datasource.username=
spring.datasource.password=