В моем Spring Boot Webapp у меня есть класс планировщика с @EnableScheduling и @EnableAsync, который работает ночью @Scheduled. Класс получает сеанс с:
Session session = entityManager.unwrap(Session.class);
что приводит к этому исключению:
org.hibernate.SessionException: Session is closed!
Как правильно получить сеанс для запланированных задач?
Вот такой код:
Session session = em.unwrap(Session.class);
Query query = session.createQuery("SELECT l FROM Lei l ORDER BY l.id");
query.setFetchSize(Integer.valueOf(1000));
query.setReadOnly(true);
query.setLockMode("a", LockMode.NONE);
// http://stackoverflow.com/questions/5067619/jpa-what-is-the-proper-pattern-for-iterating-over-large-result-sets
ScrollableResults results = query.scroll(ScrollMode.FORWARD_ONLY);
while (results.next()) {
Lei lei = (Lei) results.get(0);
writer.writeLEI(lei);
}
results.close();
session.close();
EntityManager
? - person M. Deinum   schedule 22.09.2016