Как сделать Hibernate Transaction объектом в рекурсивном вызове - PullRequest
0 голосов
/ 10 мая 2019

Я получаю ошибку ниже в моей консоли, когда я вызываю рекурсивный метод.Запрос на обновление выполняется нормально, но он не будет обновлять запись в базе данных.

org.springframework.transaction.TransactionSystemException: Не удалось зафиксировать транзакцию Hibernate;вложенное исключение - org.hibernate.TransactionException: транзакция не была успешно запущена

public boolean abcMethod() {
    Transaction txn = session.beginTransaction();
    String querySqlSold = "UPDATE abc_table SET inventory_type='SOLD', status='ACTIVE' where set_id="
            + setId + " and game_num=" + gameMaster.getGameNum() + " and priceScheme=" + prizeSchemeId;
    SQLQuery querySold = session.createSQLQuery(querySqlSold);
    querySold.executeUpdate();

    String querySqlSelect = "SELECT set_id FROM abc_table where inventory_type='UPCOMING' and `status`='ACTIVE' and game_num="
            + gameMaster.getGameNum() + " and priceScheme=" + prizeSchemeId;
    List list = session.createSQLQuery(querySqlSelect).list();
    int newSetId = Integer.valueOf(list.get(0).toString());

    if (newSetId != 0) {
        String querySqlCurrent = "UPDATE abc_table SET inventory_type='CURRENT' where game_num="
                + gameMaster.getGameNum() + " and priceScheme=" + prizeSchemeId + " and set_id=" + newSetId;
        SQLQuery queryCurrent = session.createSQLQuery(querySqlCurrent);
        queryCurrent.executeUpdate();
        txn.commit();
        return true;
    } else {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("errorCode", "809");
        jsonObject.put("errorMsg", "finished");
        throw new CustomException(jsonObject.toString());
    }

public void xyzMethod() {
    abcMethod();
    abcMethod();
}

Ответы [ 2 ]

0 голосов
/ 11 мая 2019

Вы можете попробовать что-то вроде этого

    try {
      tx = session.beginTransaction();
      if (!tx.wasCommitted()){
        tx.commit();
      }
    } catch (Exception exp) {
      tx.rollback();
    }

Это должно помочь вам лучше понять проблему.

0 голосов
/ 11 мая 2019

Где здесь рекурсия? Делай откат.

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