Hibernate 4.3,使用Netbeans的JavaServer Faces,返回零行的表

时间:2016-06-08 09:56:15

标签: java mysql hibernate netbeans jsf-2.2

我正在尝试重新创建this old NetBeans hibernate-webapp tutorial。所有项目都是使用JSF托管bean从MySQL数据库中检索数据。

我遇到以下问题,我认为这是因为我使用的是较新的软件版本,但我想知道项目使用更新版本需要进行哪些调整:

我能够显示最初的10行检索数据,这是运行时在浏览器中显示的数据&#39;从NetBeans执行。但是,当我单击呈现的网页中的链接以显示接下来的10个结果时,我会收到一个空表(没有错误消息,列标题存在但是没有数据行< / strong>,只渲染一行空单元格。)

我已修改教程以使用StandardServiceRegistryBuilder,如here所述。另外,我在FilmController.java中使用@Named(value =&#34; filmController&#34;)而不是@MessageBean。

  • 我的设置
  • Hibernate 4.3
  • NetBeans 8.1
  • Glassfish 4.1.1
  • MySQL的连接器的Java-39年5月1日 - bin.jar
  • JSF 2.2
  • JDK 1.8.0_92

我尝试过使用WildFly而不是GlassFish,但我遇到了完全相同的问题。

第一页正确呈现的事实表明没有语法错误。

问题似乎是我尝试从浏览器中检索数据的方式。在FilmHelper.java中,我有许多以下列方式检索数据的方法:

List<Actor> actorList = null;
try {
    org.hibernate.Transaction tx = session.beginTransaction();
    Query q = session.createQuery (...some tested query);
    actorList = (List<Actor>) q.list();

} catch (Exception e) {
    e.printStackTrace();
}

(但正如我所说,当项目首次初始化时,这些方法可以正常工作。)

总结:我想知道为什么在首次初始化网页时从MySQL正确加载数据,但是当随后点击超链接时,不会从数据库中检索和/或显示更多数据。

1 个答案:

答案 0 :(得分:0)

所以对于任何其他完整的新手:  我通过添加一行和一个“提交”对每个辅助方法进行了修改。在每种方法中。例如,上面的代码段变为:

List<Actor> actorList = null;
try {
    this.session = HibernateUtil.getSessionFactory().getCurrentSession();
    org.hibernate.Transaction tx = session.beginTransaction();
    Query q = session.createQuery (...some tested query);
    actorList = (List<Actor>) q.list();
    tx.commit();
} catch (Exception e) {
    e.printStackTrace();
}

这是一个修复,如果不是 修复。