Может кто-нибудь сказать мне, почему моя entityTransaction не работает?
rollback () не имеет никакого эффекта, commit () тоже, я думаю, также begin (). Я попытался отключить автокоммит:
spring.datasource.auto-commit=false
spring.datasource.hikari.auto-commit=false
, но после этого никакого эффекта не произошло, тем не менее транзакции не работают. Вот мой сервис:
@Service
public class MyService {
...
@Autowired
private final JdbcTemplate jdbcTemplate;
...
@Autowired
private EntityManagerFactory entityManagerFactory;
...
@Transactional
public ArrayList<String> executeSQL(String[] split) {
EntityManager entityManager = entityManagerFactory.createEntityManager();
EntityTransaction entityTransaction = entityManager.getTransaction();
ArrayList<String> listException = new ArrayList<String>();
boolean flag = false;
for (int i = 0; i < split.length; ++i) {
String query = split[i];
try {
entityTransaction.begin();
mapList = jdbcTemplate.queryForList(query);
entityTransaction.commit();
listException.add("Success!");
} catch (Exception e1) {
entityTransaction.rollback();
try {
entityTransaction.begin();
int rows = jdbcTemplate.update(query);
entityTransaction.commit();
listException.add("Sucesss! { [" + rows + "] <-- affected rows }");
} catch (Exception e2) {
entityTransaction.rollback();
flag = true;
listException.add(e2.getCause().getMessage());
}
}
}
entityManager.close();
if(flag){
mapList = emptyMapList;
updateFlag = false;
}
else{
updateFlag = true;
}
return listException;
}
...