Segui a videoaula, porém tive o seguinte erro no último exemplo:
Exception in thread "main" javax.persistence.NonUniqueResultException: query did not return a unique result: 5
Como estamos utilizando o método .getSingleResult()
, esperava-se que a consulta fosse limitada em apenas um resultado, e não foi isso que ocorreu. Desta forma, acrescentei um método .setMaxResults(1)
, o que passou a limitar a consulta em apenas um resultado. Segue a solução abaixo da classe ProdutoDAO
:
//...
public BigDecimal buscarPrecoDoProdutoComNome(String nome) {
String jpql = "SELECT p.preco FROM Produto p WHERE p.nome = :nome";
return em.createQuery(jpql, BigDecimal.class)
.setParameter("nome", nome)
.setMaxResults(1)
.getSingleResult();
}
Classe CadastroDeProdutos
:
public class CadastroDeProdutos {
public static void main(String[] args) {
EntityManager em = JPAUtil.getEntityManager();
ProdutoDAO produtoDAO = new ProdutoDAO(em);
//...
BigDecimal precoDoProduto = produtoDAO.buscarPrecoDoProdutoComNome("Xiaomi Redmi");
System.out.println(precoDoProduto);
}
}
Log: