我正在开发一个使用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
}谁能帮帮我?谢谢!!
发布于 2012-02-16 19:53:06
会不会是您的Concurso对象有一个延迟加载的对象列表,并且因为您已经关闭了会话,所以这些对象不会加载。
您需要向我们提供更多信息,但目前,请尝试设置
@OneToMany(fetch = FetchType.EAGER)在Concurso中的集合上,并阅读Open session in view模式,尽管有些人可能会将其称为反模式。
https://stackoverflow.com/questions/9310712
复制相似问题