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

#java #oracle #hibernate #session #transactions

Вопрос:

Я использую java и спящий режим, у меня есть метод, в котором я открываю транзакцию, получаю некоторые обновления и сохраняю сеанс, а затем фиксирую транзакцию. не всегда, но иногда при совершении транзакции сеанс или транзакция становятся нулевыми, есть ли для этого какая-либо причина? и как я могу это решить?

         session.beginTransaction();

        for (ThreadParticipant activatedThreadParticipant : activatedThreadParticipants) {
            activatedThreadParticipant.setActive(true);
            activatedThreadParticipant.setAuditor(false);
            activatedThreadParticipant.setInviter(currentUser);
            activatedThreadParticipant.setHistoryEndTime(null);
            session.update(activatedThreadParticipant);
            newParticipants.add(activatedThreadParticipant);
        }
        if (!newParticipants.isEmpty()) {
            newParticipants.forEach(e -> CacheUtil.invalidateThreadParticipant(e.getMessageThread().getId(), e.getParticipant().getId()));
            newParticipants.forEach(e -> CacheUtil.invalidateThreadParticipantById(e.getId()));
        }
        for (User participant : noDeplicatedUsers) {
            Long checkExistanceCount = (Long) session.createQuery("select count(1) from ThreadParticipant where "  
                    "participant.id = :pid and messageThread.id = :mtid")
                    .setParameter("pid", participant.getId())
                    .setParameter("mtid", messageThread.getId())
                    .uniqueResult();
            if (checkExistanceCount == 0) {
                newParticipants.add(createThreadParticipant(participant, false, auditor, currentUser, messageThread, contactType, session));
            }
        }
      
        messageThread.getMembers().addAll(newParticipants);
        session.update(messageThread);
        session.commitTransaction();
       
 

Комментарии:

1. Без трассировки стека действительно трудно сказать, что происходит не так.