Я использую Hibernate в NetBeans. Я использую класс hibernate util
, который поставляется с плагином Hibernate для NetBeans, чтобы получить текущий сеанс. То есть я использую следующий код для получения моего текущего сеанса:
this.session = HibernateUtil.getSessionFactory().getCurrentSession();
Но когда я пытаюсь получить что-нибудь ленивое, выдается следующее сообщение:
org.hibernate.LazyInitializationException: failed to lazily initialize a course.
Я использую 2 DAO. Одним из них является Abstract DAO, а вторым является CoutseDAO, который расширяет AbstractDAO.
код выглядит следующим образом
public class AbstractDAO<T> {
Session session = null;
public AbstractDAO()
{
this.session = HibernateUtil.getSessionFactory().getCurrentSession();
}
public void createObject(T object)
{
Transaction tx = null;
try
{
tx = session.beginTransaction();
session.save(object);
tx.commit();
}
catch (HibernateException e)
{
tx.rollback();
throw new DataAccessLayerException(e);
}
finally
{
}
}
public void updateObject(T object )
{
Transaction tx = null;
try
{
tx = session.beginTransaction();
session.update(object);
tx.commit();
}
catch (HibernateException e)
{
tx.rollback();
throw new DataAccessLayerException(e);
}
finally
{
}
}
public void deleteObject(T object )
{
Transaction tx = null;
try
{
tx = session.beginTransaction();
session.delete(object);
tx.commit();
}
catch (HibernateException e)
{
tx.rollback();
throw new DataAccessLayerException(e);
}
finally
{
}
}
}
второй класс выглядит следующим образом
public class CourseDAO extends AbstractDAO<Course>{
public CourseDAO()
{
super();
}
public Course findByID(int cid){
Course crc = null;
Transaction tx = null;
try {
tx = session.beginTransaction();
Query q = session.createQuery("from Course as course where course.cid = "+cid+" ");
crc = (Course) q.uniqueResult();
tx.commit();
}
catch (HibernateException e)
{
e.printStackTrace();
tx.rollback();
throw new DataAccessLayerException(e);
}
finally
{
}
return crc;
}
public List<Course> findAll(){
List lst = null;
Transaction tx = null;
try {
tx = session.beginTransaction();
Query q = session.createQuery("from Course ");
lst = q.list();
tx.commit();
}
catch (HibernateException e)
{
e.printStackTrace();
tx.rollback();
throw new DataAccessLayerException(e);
}
finally
{
}
return (List<Course>)lst ;
}
}