NamedQueries JPA jax-rs REST WHERE 等于

NamedQueries JPA jax-rs REST WHERE Equals

我正在 this guide 之后创建一个 REST 服务,现在我想在两个不同的列中获取具有特定值的 table 行。

然后可以在JSP中呈现。

这可能吗?如果可以,我该如何做到这一点?

这是您的 yourNameFacadeREST 的示例:

@GET
@Override
@Produces({"application/xml", "application/json"})
public List<ExampleTable> testFindByName() {
    List<ExampleTable> results = em.createNamedQuery("ExampleTable.findByName", ExampleTable.class)
            .setParameter("firstname", 1)
            .setParameter("lastname", 1)
            .getResultList();
    return results;
}

@GET
@Path("test")
@Produces(MediaType.TEXT_HTML)
public void findName(
        @Context final HttpServletRequest request,
        @Context final HttpServletResponse response) throws ServletException, IOException {
    RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/foundbyname.jsp");
    request.setAttribute("items", testFindByName());
    dispatcher.forward(request, response);
}

不要忘记将@NamedQuery 更改为(如下例):

@NamedQuery(name = "ExampleTable.findByName", query = "SELECT e FROM ExampleTable e WHERE e.firstname = :firstname AND e.lastname = :lastname")

这将找到名字为“1”和姓氏为“1”的行。

要在 JSP 中显示它,您现在可以使用例如:

<c:forEach items="${items}" var="item">

然后:

<p>firstname: ${item.firstname}</p>

当然根据你的需要。