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

时间:2015-04-02 01:05:49

标签: java jsf-2 ejb-3.0

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

  1. User.java
  2. UserController.java
  3. UserFacade.java
  4. AbstractFacade.java
  5. 并且已经从实体类创建了JSF页面。它生成了

    1. Create.xhtml
    2. Edit.xhtml
    3. List.xhtml
    4. View.xhtml
    5. 在User.java中我有

        

      @NamedQuery(name =" Users.findByName",query =" SELECT u FROM Users u   WHERE u.name =:name"),

      我需要了解如何在我的View.xhtml中使用此查询,因为我只需要按名称显示用户并非全部。有人可以给我一个指示。

1 个答案:

答案 0 :(得分:1)

如前所述,很难知道你想要什么。要在View.xhtml"中实现查询。是否有意义,因为NamedQuery将返回一个用户列表,而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>

如果你想要/需要使用NamedQuery,你需要在EJB上创建一个方法(= UserFacade);

之类的东西
public List<User> findByName(String name) {
    return em.createNamedQuery("Users.findByName").setParameter("name", name).getResultList();
}

你怎么称呼这种方法我不知道,因为要求不明确。