Как обновить объект из потока в Dropwizard, гибернация

#java #multithreading #hibernate #dropwizard

#java #многопоточность #спящий режим #dropwizard

Вопрос:

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

Исключение в потоке «Thread-22» org.hibernate.Исключение HibernateException: в настоящее время сеанс не привязан к контексту выполнения

Я попытался открыть новый сеанс (см. Код ниже). Управление сеансами обычно выполняется @UnitOfWork, но эта аннотация, похоже, применима только к ресурсам.

 public class ConfigDAO extends AbstractDAO<Config>
{
    private final SessionFactory sessionFactory;

    public ConfigDAO(SessionFactory factory) {
        super(factory);
        this.sessionFactory = factory;
    }

    public Config updateFromNewSession(Config config) {
        System.out.print("current session: ");
        Session session = sessionFactory.openSession();
        System.out.println(session);
        session.persist(config);
        session.close();
        return config;
    }
  

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

1. Может быть, быстрый просмотр документации поможет? dropwizard.io/1.3.9/docs/manual /…

2. В документации указано, что «Это создаст прокси вашего класса, который откроет сеанс гибернации с транзакцией вокруг методов с аннотацией @UnitOfWork». Но опять же, это примечание применимо только к ресурсам.

3. И если мы посмотрим здесь? github.com/dropwizard/dropwizard/blob /…

4. Отлично, я попробую. Спасибо за этот очень полезный ресурс.

5. Это работает. еще раз спасибо