如何使用 JSF 和 EJB 在 Java Web 应用程序中实现 @NamedQuery

How to implement @NamedQuery in Java Web application using JSF and EJB

所以我在这里是个菜鸟,我在 NetBeans 中创建了 Java Web 应用程序,从数据库 创建了 实体 类(假设我只有名为 USER 的数据库中的一个 table 它生成了

  1. User.java
  2. UserController.java
  3. UserFacade.java
  4. AbstractFacade.java

并从实体 类 创建了 JSF 页面。它生成了

  1. Create.xhtml
  2. Edit.xhtml
  3. List.xhtml
  4. 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();
}

我不知道你想如何调用这个方法,因为要求不明确。