Я использую DropWizard и Hibernate. Я собираю свой SessionFactory
следующим образом:
Configuration configuration = new Configuration();
configuration.setProperty(AvailableSettings.DRIVER, "org.h2.Driver");
configuration.setProperty(AvailableSettings.USER, "");
configuration.setProperty(AvailableSettings.PASS, "");
configuration.setProperty(AvailableSettings.URL, "jdbc:h2:file:./var/test");
configuration.setProperty(AvailableSettings.DIALECT, "org.hibernate.dialect.H2Dialect");
configuration.setProperty(AvailableSettings.CURRENT_SESSION_CONTEXT_CLASS, "thread");
return configuration.buildSessionFactory();
(См. этот вопрос , если вам интересно, почему.)
Первый из этих createQuery
вызовов успешно, а второй - с ошибкой (с ошибкой в заголовке):
try (Session session = sessionFactory.openSession()) {
Transaction transaction = session.beginTransaction();
session.createQuery(...).executeUpdate();
sessionFactory.getCurrentSession().createQuery(...).executeUpdate();
transaction.commit();
}
Два сеанса предполагается, что должны быть разными, или это артефакт того, как я установил дела обстоят? Причина, по которой я хочу, чтобы вторая версия работала, заключается в том, что она фактически вызывается из другого класса, у которого есть только дескриптор фабрики. Должен ли я проводить сеансы?