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使用Resultset执行查询,然后遍历Resultset逐一添加产品。
【讨论】:
以上是关于Hibernate - 如何在 JSP 表中显示对象列表?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Struts 2 中将数据库记录列表(通过 Hibernate 检索)显示到 JSP 页面?