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!