Olá,
Incluí dois registros mas ao listar aparece o mesmo nome:
public class CadastroDeProduto {
public static void main(String[] args) {
cadastrarProduto();
// consulta
EntityManager em = JPAUtil.getEntityManager();
ProdutoDao produtoDao = new ProdutoDao(em);
Produto p = produtoDao.buscarPorId(1l);
List<Produto> todos = produtoDao.buscarTodos();
todos.forEach(p2 -> System.out.println(p.getNome()));
}
private static void cadastrarProduto() {
// faz a conexão no BD
EntityManager em = JPAUtil.getEntityManager();
Categoria celulares = new Categoria("CELULARES");
Produto celular = new Produto("Xiaomi Redmi","Muito legal",new BigDecimal("800"), celulares);
Produto celular2 = new Produto("Zen Phone","Otimo",new BigDecimal("1000"), celulares);
ProdutoDao produtoDao = new ProdutoDao(em);
ProdutoDao produtoDao2 = new ProdutoDao(em);
CategoriaDao categoriaDao = new CategoriaDao(em);
em.getTransaction().begin();
categoriaDao.cadastrar(celulares);
produtoDao.cadastrar(celular);
produtoDao2.cadastrar(celular2);
em.getTransaction().commit();
em.close();
ProdutoDao:
public List<Produto> buscarTodos() {
String jpql = "SELECT p FROM Produto p";
return em.createQuery(jpql, Produto.class).getResultList();
}
resultado errado da busca:
Hibernate:
select
produto0_.id as id1_7_,
produto0_.categoria_id as categori6_7_,
produto0_.dataCadastro as datacada2_7_,
produto0_.descricao as descrica3_7_,
produto0_.nome as nome4_7_,
produto0_.preco as preco5_7_,
produto0_1_.marca as marca1_3_,
produto0_1_.modelo as modelo2_3_,
produto0_2_.autor as autor1_5_,
produto0_2_.numeroDePaginas as numerode2_5_,
case
when produto0_1_.id is not null then 1
when produto0_2_.id is not null then 2
when produto0_.id is not null then 0
end as clazz_
from
produtos produto0_
left outer join
informaticas produto0_1_
on produto0_.id=produto0_1_.id
left outer join
livros produto0_2_
on produto0_.id=produto0_2_.id
Xiaomi Redmi
Xiaomi Redmi
Se eu mudo para:
Produto p = produtoDao.buscarPorId(2l);
aparece como resultado:
Zen Phone
Zen Phone
Qualquer dica será bem vinda. Obrigado.