我正在尝试重新创建this old NetBeans hibernate-webapp tutorial。所有项目都是使用JSF托管bean从MySQL数据库中检索数据。
我遇到以下问题,我认为这是因为我使用的是较新的软件版本,但我想知道项目使用更新版本需要进行哪些调整:
我能够显示最初的10行检索数据,这是运行时在浏览器中显示的数据&#39;从NetBeans执行。但是,当我单击呈现的网页中的链接以显示接下来的10个结果时,我会收到一个空表(没有错误消息,列标题存在但是没有数据行< / strong>,只渲染一行空单元格。)
我已修改教程以使用StandardServiceRegistryBuilder,如here所述。另外,我在FilmController.java中使用@Named(value =&#34; filmController&#34;)而不是@MessageBean。
我尝试过使用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正确加载数据,但是当随后点击超链接时,不会从数据库中检索和/或显示更多数据。
答案 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();
}
这是一个修复,如果不是 修复。