使用struts2-jquery-grid进行Hibernate。如果我关闭会话,网格不加载数据

时间:2012-02-16 11:45:14

标签: jquery hibernate postgresql struts2

我正在使用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
    }

有人可以帮助我???? 谢谢!

1 个答案:

答案 0 :(得分:1)

可能是您的Concurso对象有一个延迟加载对象的列表,并且由于您已关闭会话而无法加载它们。

您需要向我们提供更多信息,但暂时尝试设置

@OneToMany(fetch = FetchType.EAGER)

关于Concurso中的集合,并在视图模式中阅读Open会话,尽管有些人可能会将其称为反模式。