【发布时间】:2014-01-11 17:00:42
【问题描述】:
我是 jsf 和 jpa 的新手,但我想显示数据库中表中的所有记录。
显示所有记录的数据页可通过我的导航访问。
<h:body>
<h:form>
<p:menu styleClass="left-navigation">
<p:submenu label="Versand" >
<p:menuitem value="Bargeld-Versand" action="createNewAblieferung"/>
<p:menuitem value="Bargeld-Bestellung"/>
<p:menuitem value="Wertpost-Versand"/>
</p:submenu>
<p:submenu label="Administration">
<p:menuitem value="Bestellungen"/>
<p:menuitem value="Ablieferungen" action="allAblieferungen"/>
<p:menuitem value="User"/>
</p:submenu>
</p:menu>
</h:form>
</h:body>
这是数据页“allAblieferungen.xhtml”的代码,它应该在primefaces数据表中显示所有记录。
<h:body>
<ui:composition template="WEB-INF/template/master.xhtml">
<ui:define name="content">
<h:form>
<p:dataTable var="abl" value="#{ablieferungPM.getAllAblieferungen()}">
<p:column headerText="ID">
<h:outputText value="#{abl.id}"
</p:column>
<p:column headerText="AblieferndeGS">
<h:outputText value="#{abl.ablieferdeGS}"
</p:column>
<p:column headerText="EmpfängerGS">
<h:outputText value="#{abl.empfaengerGS}"
</p:column>
<p:column headerText="Bemerkung">
<h:outputText value="#{abl.bemerkung}"
</p:column>
<p:column headerText="Summe">
<h:outputText value="#{abl.summe}"
</p:column>
</p:dataTable>
</h:form>
</ui:define>
</ui:composition>
</h:body>
我的托管 bean (ablieferungPM.java) 提供了 ui 的所有方法,包括用于显示表的所有记录的“getAllAblieferungen()”方法。
@EJB
private AblieferungService service;
public List<Ablieferung> getAllAblieferungen() {
return service.getAllAblieferungen();
}
该方法从无状态 bean (AblieferungService.java) 调用服务。该服务包括业务逻辑的所有方法,并使用 jpa 进行数据库访问。 “getAllAblieferungen()”从我的数据库中收集对象
@PersistenceContext
private EntityManager em;
public List<Ablieferung> getAllAblieferungen() {
return em.createNamedQuery(Ablieferung.FIND_ALL, Ablieferung.class).getResultList();
}
要获取表的所有对象,我使用下面的实体类的查询
@NamedQueries({
@NamedQuery(name = Ablieferung.FIND_ALL, query = "SELECT a FROM Ablieferung a"),})
所以,问题是,点击“Ablieferung”链接不会发生任何事情,真的什么都不会发生! glassfish的控制台也不例外…… 可以使用导航第一个链接上的表单将新对象插入数据库。这工作正常,所以到数据库的连接应该没问题!
【问题讨论】: