Получение ошибки «Невозможно выполнить фиксацию во время управляемой транзакции» | «Невозможно выполнить откат во время подчиненного сеанса» - PullRequest
0 голосов
/ 05 августа 2020

Я использую конфигурацию <xa-datasource> в моем автономном jboss-eap.

Внутри моего resourceDaoImpl я выполняю query.executeUpdate () для выполнения запроса H SQL. Но я получаю сообщение об ошибке, например "You cannot commit during a managed transaction"|"You cannot rollback during a subordinate session".

Я пробовал много вариантов

  1. Использование @TransactionManagement(value=TransactionManagementType.BEAN) для сохранения транзакции на уровне bean-компонента, но все равно получаю ошибку.

  2. Вместо <xa-datasource> используйте <datasource jta="true"...>, но все равно ошибка.

Я не понимаю.

РЕДАКТИРОВАТЬ:

Стек вызовов очень простой, я использую спящий режим Spring в качестве основы. получение соединения с источником данных XA и выполнение хранимой процедуры с использованием запроса JPA.

Внутри хранимой процедуры я использую

PRAGMA AUTONOMOUS_TRANSACTION;

и COMMIT;

EDIT [ 1]:

@Repository
public class MyBatchDaoImpl implements MyBatchDao {

    private DataSource dataSource;

    void runMyBatch() {
        StringBuilder query =null;
        dataSource = getMydataSource();   //this method does the jndi lookup for my datasource
        
        query = new StringBuilder();
        query.append("call my_sp()");
        CallableStatement st    =   dataSource.getConnection().prepareCall(query.toString());
    
        st.execute();
        st.closeStatement();
    }
}

Интерфейс называется:

public interface  MyBatchDao{

   void runMyBatch();
}

Это суть моего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...