如何使用 JSF 和 EJB 在 Java Web 应用程序中实现 @NamedQuery
How to implement @NamedQuery in Java Web application using JSF and EJB
所以我在这里是个菜鸟,我在 NetBeans 中创建了 Java Web 应用程序,从数据库 创建了 实体 类(假设我只有名为 USER 的数据库中的一个 table 它生成了
- User.java
- UserController.java
- UserFacade.java
- AbstractFacade.java
并从实体 类 创建了 JSF 页面。它生成了
- Create.xhtml
- Edit.xhtml
- List.xhtml
- View.xhtml
在User.java我有
@NamedQuery(name = "Users.findByName", query = "SELECT u FROM Users u
WHERE u.name = :name"),
我需要了解如何在我的 View.xhtml 中执行此查询,因为我只需要按名称显示用户而不是全部。有人可以给我指导吗。
如前所述,很难知道自己想要什么。 "implement the query in View.xhtml" 没有意义,因为 NamedQuery 将 return 一个用户列表,而 View.xhtml 只能显示 1 个用户。
从 List.xhtml 开始使用它会更有意义,但是使用数据表过滤会更容易;像
<p:column filterBy="#{item.name}" filterMatchMode="contains">
<f:facet name="header">
Name
</f:facet>
<h:outputText value="#{item.name}"/>
</p:column>
如果你want/need要使用NamedQuery你需要在EJB(=UserFacade)上创建一个方法;像
public List<User> findByName(String name) {
return em.createNamedQuery("Users.findByName").setParameter("name", name).getResultList();
}
我不知道你想如何调用这个方法,因为要求不明确。
所以我在这里是个菜鸟,我在 NetBeans 中创建了 Java Web 应用程序,从数据库 创建了 实体 类(假设我只有名为 USER 的数据库中的一个 table 它生成了
- User.java
- UserController.java
- UserFacade.java
- AbstractFacade.java
并从实体 类 创建了 JSF 页面。它生成了
- Create.xhtml
- Edit.xhtml
- List.xhtml
- View.xhtml
在User.java我有
@NamedQuery(name = "Users.findByName", query = "SELECT u FROM Users u WHERE u.name = :name"),
我需要了解如何在我的 View.xhtml 中执行此查询,因为我只需要按名称显示用户而不是全部。有人可以给我指导吗。
如前所述,很难知道自己想要什么。 "implement the query in View.xhtml" 没有意义,因为 NamedQuery 将 return 一个用户列表,而 View.xhtml 只能显示 1 个用户。
从 List.xhtml 开始使用它会更有意义,但是使用数据表过滤会更容易;像
<p:column filterBy="#{item.name}" filterMatchMode="contains">
<f:facet name="header">
Name
</f:facet>
<h:outputText value="#{item.name}"/>
</p:column>
如果你want/need要使用NamedQuery你需要在EJB(=UserFacade)上创建一个方法;像
public List<User> findByName(String name) {
return em.createNamedQuery("Users.findByName").setParameter("name", name).getResultList();
}
我不知道你想如何调用这个方法,因为要求不明确。