I'm setting up a panel that should show 5 products, for example, in the index of a page, however I can only load all the objects that are saved in the DB, and I can not think of a way to do this, , by DAO, loading in a class or even on the front. Would you have any solutions?
Front:
<c:forEach items="${dao.listarPlat('PS4')}" var="p">
<div class="col-md-3 produto well i2">
<img class="img" src="img/${p.foto1}" title="" alt="">
${p.titulo}<br>${p.plataforma}
R$
<f:formatNumber minFractionDigits="2" currencySymbol="R$">
${p.preco}
</f:formatNumber>
<button class="btn btn-success">Comprar</button>
</div>
</c:forEach>
DAO:
public List<Produto> findProdutosPlat(String plataforma) {
try {
Query query = em.createQuery("select p from Produto as p where p.plataforma like :plataforma");
query.setParameter("plataforma", plataforma + "%");
List<Produto> produtos = query.getResultList();
return produtos;
} finally {
em.close();
}
}
CtrlProduct:
public List<Produto> listarPlat(String dados) throws Exception {
ProdutoDAO dao = new ProdutoDAO();
return dao.findProdutosPlat(dados);
}
The solution was to add the .setMaxResults (5) to DAO, thus:
public List<Produto> findProdutosMenu(String plataforma) {
try {
Query query = em.createQuery("select p from Produto as p where p.plataforma like :plataforma");
query.setParameter("plataforma", plataforma + "%");
query.setMaxResults(5);
List<Produto> produtos = query.getResultList();
return produtos;
} finally {
em.close();
}
}