Nos capitulos 4 e 5, tenho feito e refeito as aulas e não consigo encontrar o que está acontecendo que pra cada produto encontrado o hibernate faz uma consulta também na tabela de categorias. Por fim, depois de terminar a aula 5 baixei o código fonte e substitui os modelos e o daos do meu projeto, porém o problema continua.
Alguma sugestão de porque isso está acontecendo?
Minha classe main:
public class CadastroDeProdutos {
public static void main(String[] args) {
cadastrarProduto();
EntityManager em = JPAUtil.getEntityManager();
ProdutoDao produtoDao = new ProdutoDao(em);
Produto p = produtoDao.buscarPorId(1l);
System.out.println(p.getPreco());
List<Produto> todos = produtoDao.buscarTodos();
//List<Produto> todos = produtoDao.buscarPorNome("Xiaomi Redmi");
//List<Produto> todos = produtoDao.buscarPorNomeDaCategoria("CELULARES");
todos.forEach(p2 -> System.out.println(p2.getNome()));
}
private static void cadastrarProduto() {
Categoria celulares = new Categoria("CELULARES");
Produto celular = new Produto("Xiaomi Redmi","Muito Legal",new BigDecimal("800"),celulares);
EntityManager em = JPAUtil.getEntityManager();
ProdutoDao produtoDao = new ProdutoDao(em);
CategoriaDao categoriaDao = new CategoriaDao(em);
em.getTransaction().begin();
categoriaDao.cadastrar(celulares);
produtoDao.cadastrar(celular);
em.getTransaction().commit();
em.close();
}
}
SQL Gerado no console:
Hibernate:
insert
into
categorias
(nome)
values
(?)
Hibernate:
insert
into
produtos
(categoria_id, dataCadastro, descricao, nome, preco)
values
(?, ?, ?, ?, ?)
Hibernate:
select
produto0_.id as id1_1_0_,
produto0_.categoria_id as categori6_1_0_,
produto0_.dataCadastro as datacada2_1_0_,
produto0_.descricao as descrica3_1_0_,
produto0_.nome as nome4_1_0_,
produto0_.preco as preco5_1_0_,
categoria1_.id as id1_0_1_,
categoria1_.nome as nome2_0_1_
from
produtos produto0_
left outer join
categorias categoria1_
on produto0_.categoria_id=categoria1_.id
where
produto0_.id=?
800.00
Hibernate:
select
produto0_.id as id1_1_,
produto0_.categoria_id as categori6_1_,
produto0_.dataCadastro as datacada2_1_,
produto0_.descricao as descrica3_1_,
produto0_.nome as nome4_1_,
produto0_.preco as preco5_1_
from
produtos produto0_
Hibernate:
select
categoria0_.id as id1_0_0_,
categoria0_.nome as nome2_0_0_
from
categorias categoria0_
where
categoria0_.id=?
Hibernate:
select
categoria0_.id as id1_0_0_,
categoria0_.nome as nome2_0_0_
from
categorias categoria0_
where
categoria0_.id=?
Hibernate:
select
categoria0_.id as id1_0_0_,
categoria0_.nome as nome2_0_0_
from
categorias categoria0_
where
categoria0_.id=?
Xiaomi Redmi
Xiaomi Redmi
Xiaomi Redmi
Xiaomi Redmi