Данные не сохраняются в базе данных - PullRequest
1 голос
/ 19 апреля 2019

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

Это то, что я вижу в журналах для количества обновленных строк:

  • обязательство START UPDATING для annuler
  • обязательство DONE UPDATING для annuler: 3
  • Номер аннулятора вовлечения 3

Однако это не то, что отражается в базе данных.

Я уже пытался создать другой класс с @Component и аннотироватьметод с @ Transactional.

Это основной класс

@Component
@Transactional
public class StatutEngagementJobAction extends GenericJobAction { 

private boolean executeAction(Tenant tenant, DateTime deadline, BigDecimal abattement, Set<DateTime> legalDays) {

  annulationEngagementNonRespecte();

}

public void annulationEngagementNonRespecte() {
        LOGGER.info("STARTING annulation engagement ");
        List<StatutEngagementDTO> annulations = new ArrayList<>();
        List<String> engagementIdsToAnnuler = new ArrayList<>();
        List<StatutEngagementDTO> allEngagementNonRespecteActif = engagementDAO.findAllEngagementNonRespecteActif();

        for (StatutEngagementDTO engagementDTO : allEngagementNonRespecteActif) {
            Engagement engagementNonRespect = engagementDAO.find(engagementDTO.getIdEngagement());
                                engagementIdsToAnnuler.add(engagementNonRespect.getIdEngagement());
                    annulations.add(engagementDTO);

        if (CollectionUtils.isNotEmpty(engagementIdsToAnnuler)) {
            int num = engagementDAO.updateEngagement(engagementIdsToAnnuler);
            LOGGER.info("Number of engagement annuler {} ", num);
        }

        LOGGER.info("END annulation engagement ");
    }

Этот метод вызывается для обновления и найден в другом классе

@Override
    public int updateEngagement(List<String> engagementIdsToAnnuler){
        LOGGER.info("START UPDATING engagement to annuler ");
        String queryString =
                "UPDATE Engagement " +
                "SET etat = :etat , statut = :statut " +
                "WHERE idEngagement IN :engagementIdsToAnnuler";

        Query query = getFilteredCurrentSession().createQuery(queryString);
        query.setParameter("etat", EngagementEtatType.ACTIF);
        query.setParameter("statut", EngagementStatutType.NON_RESPECTE);
        query.setParameterList("engagementIdsToAnnuler", engagementIdsToAnnuler);

        int updatedEngagement = query.executeUpdate();
        LOGGER.info("DONE UPDATING engagement to annuler: {} ", updatedEngagement);
        return query.executeUpdate();

    }

Запрос на обновление фактически работает.Однако данные по-прежнему не сохраняются. Факт: данные не сохраняются. Ожидается: данные должны быть сохранены в базе данных

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