Я делаю это в каждом методе DAL:
public static Product GetProductByPartNumber(String partNumber)
{
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Product product = (Product)session.createCriteria(Product.class)
.add(Restrictions.eq("partNumber", partNumber))
.uniqueResult();
session.getTransaction().commit();
return product;
}
Это вызывает проблемы, выдает ошибки 'сеанс закрыт' из-за отложенной загрузки и т.д.
Как я могу получить getCurrentSession, чтобы не получать новый сеанс?
public class HibernateUtil {
private static final SessionFactory sessionFactory = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
try {
// Create the SessionFactory from hibernate.cfg.xml
Configuration configuration = new Configuration().configure();
//configuration.addClass(hsspider.Model.AMCategory.class);
return configuration.buildSessionFactory();
}
catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
Я предполагаю, что это проблема, что вызов getCurrentSession не получает текущий сеанс правильно?
Или же вызывает транзакции.commit (); убить сеанс?
Должен ли я просто использовать флэш?