Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Várias impressões no console

Oioi, bom dia!

Alguém me ajuda a entender pq meu console está com este log "repetido"?

[...]
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=?
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=?
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=?
Xiomi Redmi
Xiomi Redmi
Xiomi Redmi
Xiomi Redmi
Xiomi Redmi
Xiomi Redmi
Xiomi Redmi
Xiomi Redmi
Xiomi Redmi
Xiomi Redmi
Xiomi Redmi
Xiomi Redmi

CadastoDeProdutos:

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();
        todos.forEach(p2 -> System.out.println(p2.getNome()));
    }


    private static void cadastrarProduto() {
        Categoria celulares = new Categoria("CELULARES");    
        Produto celular = new Produto("Xiomi 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();
    }

}

ProdutoDao:

public class ProdutoDao {

    private EntityManager em; 

        public ProdutoDao(EntityManager em) { 
        super();
        this.em = em;
    }

    public void cadastrar(Produto produto) {
        this.em.persist(produto);        
    }

    public Produto buscarPorId(Long id) {
        return em.find(Produto.class, id);
    }

    public List<Produto> buscarTodos() { 
        String jpql = "SELECT p FROM Produto p"; 
        return em.createQuery(jpql, Produto.class).getResultList();
    }
}

Obrigada!!

1 resposta
solução!

Oi Vanessa,

No seu banco de dados deve ter vários registros de produtos e categorias, por conta de ter rodado a classe de teste várias vezes, e com isso na consulta para buscar todos os produtos a jpa vai disparar um select para cada produto, para carregar sua respectiva categoria.