Hibernate - 如何在 JSP 表中显示对象列表?

Posted

技术标签:

【中文标题】Hibernate - 如何在 JSP 表中显示对象列表?【英文标题】:Hibernate - how to display object list in JSP table? 【发布时间】:2016-05-31 13:11:46 【问题描述】:

我得到了包含几列的表格,我希望表格将显示数据库中的所有行。但是控制台说:javax.persistence.NonUniqueResultException: result returns more than one elements

这是一个代码:

EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("onlineshop");
    EntityManager entityManager = entityManagerFactory.createEntityManager();

    Query query = entityManager.createNativeQuery("SELECT iduser FROM lastloggeduser ORDER BY idlastloggeduser DESC LIMIT 1");
    String s = query.getSingleResult().toString();


    if (s != null)
        Query selectAll = entityManager.createQuery("FROM Product WHERE iduser=:iduser");   
        selectAll.setParameter("iduser", s);
        System.out.println(s);
        Product p = (Product) selectAll.getSingleResult();

            Product product = new Product();
            product.setID(p.getID());
            product.setProduct(p.getProduct());
            product.setName(p.getName());
            product.setCompany(p.getCompany());
            product.setType(p.getType());
            product.setPrice(p.getPrice());

            products.add(product);


    

JSP:

<c:forEach var="product" items="$products">
            <tr>
                <td>$product.getID()</td>
                <td><img src="$product.getProduct()" /></td>
                <td>$product.getName()</td>
                <td>$product.getCompany()</td>
                <td>$product.getType()</td>
                <td>$product.getPrice()$</td>
                <td><form action="/OnlineShop/cart/cart.html?selectedItem=$product.getID()"  method="post"><input type="submit" value="Delete"/></form></td>
            </tr>
            </c:forEach>

当我添加这个时:

    selectAll.setMaxResults(1);

它工作正常,但在表格中只出现一行,我应该怎么做才能显示所有行?

【问题讨论】:

【参考方案1】:
javax.persistence.NonUniqueResultException: result returns more than one elements

这表示该表有多个相同iduser的行。

    Product p = (Product) selectAll.getSingleResult();

不要期待单个结果,而是尝试多个值。使用list()

List<Product> productsList = selectAll.list();

如果您不希望有数据出现,请清理您的数据库以包含每个 iduser 的单行。

【讨论】:

List products = (List) selectAll.getResultList(); - 它有效:)【参考方案2】:

使用Resultset执行查询,然后遍历Resultset逐一添加产品。

【讨论】:

以上是关于Hibernate - 如何在 JSP 表中显示对象列表?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Struts 2 中将数据库记录列表(通过 Hibernate 检索)显示到 JSP 页面?

如何使用hibernate获取表中的所有数据?

5.使用struts+hibernate显示学生列表

我想从数据库表中选择最后 5 个条目并将其显示在页面上。如何使用 JSP 实现它?

c# 如何将数据库表中要显示的内容在子窗口中显示出来

jsp中datagrid怎么对mysql表中的数据进行读取和显示(最好还有分页效果)