Spring hibernate не обновляет сущность - PullRequest
0 голосов
/ 15 февраля 2012

У меня есть приложение Spring / JPA / Hibernate, и есть фрагмент кода, который каждую минуту вызывается кварцевым заданием для отправки некоторых уведомлений.

@Transactional
public void sendNotifications(){
    Set<MyEntity> entitySet = getDAO().findEntitiesToNotify();
    for (MyEntity e : entitySet) {
        sendEntityNotificationEmail(e);
        e.setNotification(true);
        this.merge(e);
    }
     return false;
 }

Это прекрасно работает большую часть времени.Ключевая фраза «большую часть времени», потому что время от времени эта транзакция не обновляет базу данных, поэтому электронное письмо с уведомлением отправляется каждую минуту, пока я не отправлюсь вручную и не уничтожу кварцевое задание или не обновлю базу данных.В журналах нет ошибок, и база данных не обновляется.Кто-нибудь имеет представление о том, что может быть проблема?Или каким-либо образом я могу отладить эту проблему.Есть ли какое-то состояние гонки, потому что этот метод вызывается каждую минуту, поэтому новый поток снова вызывает ту же задачу, в то время как другой обрабатывает ее, и поэтому изменение не сохраняется?

1 Ответ

0 голосов
/ 16 февраля 2012

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

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