[Spring] @Scheduled и @Transactional
От: InstantI Украина  
Дата: 15.10.11 11:30
Оценка:
Доброго времени суток. В приложении на Spring + Hibernate мне понадобилось выполнять некую работу по расписанию, сделал по туторилам так:
@Service
public class ServerScanner implements RequestHandler
{    
    @Scheduled(fixedRate = 60000)
    public void process()
    {
        doWork();
    }
    
    @Transactional
    private void doWork()
    {
        // Some code with DAO here
    }
    
    @Autowired
    private ServerDAO serverDAO;
}

В методе doWork() у меня есть обращение к полям с ленивой инициализацией, поэтому мне нужно, что бы открывалась сессия Hibernate'a во время выполнения этого метода.
Вот, что получается при срабатывании таймера. При этом, аналогичный код, помещенный в контроллер, работает нормально.
org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here

Попробовал добавить такую строчку в конфиг Hibernate'a:
<prop key="hibernate.current_session_context_class">thread</prop>

Теперь вылетает это:
org.hibernate.HibernateException: createQuery is not valid without active transaction

Подскажите, как правильно решать эту задачу?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.