Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Como adicionar um novo produto na mesma Categoria

Criamos um relacionamento de muitos para 1, então como eu conseguiria adicionar mais um produto com a categoria 'celulares', criada na aula?

     Categoria celulares = new Categoria("celulares");
//         Produto celular = new Produto("Motorola x502","SmartFone com 100gb ram", new BigDecimal("8857.00"), celulares  );
         Produto celular = new Produto("Sansung","SMARTFONE 128GB", new BigDecimal("1857.00"), celulares  );
         EntityManager entityManager = JPAUtil.getEntityManager();

         CategoriaDao categoriaDao = new CategoriaDao(entityManager);
         ProdutoDao produtoDao = new ProdutoDao(entityManager);

         entityManager.getTransaction().begin();// iniciando a transação

         categoriaDao.Cadastrar(celulares);
         produtoDao.Cadastrar(celular);

         entityManager.getTransaction().commit();
         entityManager.close();

Com esse código ele cria uma nova categoria chamada celulares(eu quero criar na mesma categoria criada anteriormente). Se eu tirar o código dessa nova categoria da o erro pq eu não tenho nenhuma categoria para passar.

2 respostas
solução!

Oi Andrew,

Para adicionar outro produto em uma categoria já existente você deve carrega-lá do banco de dados primeiramente:

Categoria celulares = em.createQuery("SELECT c FROM Categoria c WHERE c.nome = :nome", Categoria.class).setParameter("nome", "celulares").getSingleResult();

Produto outro = new Produto("Sansung", "SMARTFONE 128GB", new BigDecimal("1857.00"), celulares);

Top Rodrigo, ajudou demais. Eu já imaginava que tinha que recuperar ela do banco de dados, cheguei até a usar o método createQuery de uma forma diferente, mas tu mandou bem demais. Pra galera que tentar usar, na classe categoria tem que ter um construtor padrão, sem nenhum param!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software