我正在使用struts2-jquery-grid和hibernate开发一个Web应用程序。当我不关闭会话时它会起作用,但是如果我关闭,网格就不会加载数据库的数据。
以下代码不起作用:
public List<Concurso> find(int o, int q){
List<Concurso> concursoLst = null;
sessao.beginTransaction();
concursoLst = (ArrayList<Concurso>) sessao.createQuery("from Concurso order by nome").list();
sessao.getTransaction().commit();
sessao.close();
return concursoLst;
但另一方面,如果我评论sessao.close(),它的效果很好:
public List<Concurso> find(int o, int q){
List<Concurso> concursoLst = null;
sessao.beginTransaction();
concursoLst = (ArrayList<Concurso>) sessao.createQuery("from Concurso order by nome").list();
sessao.getTransaction().commit();
//sessao.close();
return concursoLst;
因此,execute()调用此方法:
public String execute(){
//code
ConcursoDAO dao = new ConcursoDAO();
gridModel = dao.find(from, to);
//code
}
有人可以帮助我???? 谢谢!
答案 0 :(得分:1)
可能是您的Concurso
对象有一个延迟加载对象的列表,并且由于您已关闭会话而无法加载它们。
您需要向我们提供更多信息,但暂时尝试设置
@OneToMany(fetch = FetchType.EAGER)
关于Concurso
中的集合,并在视图模式中阅读Open会话,尽管有些人可能会将其称为反模式。