【问题标题】:Hibernate - how to display object list in JSP table?Hibernate - 如何在 JSP 表中显示对象列表?
【发布时间】: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);

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

【问题讨论】:

    标签: java mysql hibernate jsp


    【解决方案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逐一添加产品。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-03
      • 2014-10-16
      • 2015-12-17
      • 2013-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多