Opa, estou com uma dúvida sobre esta aula. Estou com essa classe testando o insert de produto. Acontece o mesmo problema que foi mostrado no vídeo sobre o produto estar detached. Estou usando classes separadas para persistir os objetos... Tem um caminho melhor pra não ocorrer isso?
public class TesteInsertProduto {
public static void main(String[] args) {
BalancaDAO balancaDAO = new BalancaDAO();
EmbalagemDAO embalagemDAO = new EmbalagemDAO();
ProdutoDAO produtoDAO = new ProdutoDAO();
Produto produto = new Produto();
Embalagem embalagem1 = new Embalagem();
Embalagem embalagem2 = new Embalagem();
Balanca balanca1 = new Balanca();
Balanca balanca2 = new Balanca();
produto.setDescricaoProduto("Manchuria Verde");
produto.setNomeProduto("Oriente Silvestre");
produto.setRegistroProduto("BR123456752");
balanca1.setDescricaoPeso("300G");
balanca1.setPesoNominal(200.00);
balanca1.setPesoReal(220.00);
balanca1.setProduto(produto);
balancaDAO.persist(balanca1);
balanca2.setDescricaoPeso("150G");
balanca2.setPesoNominal(150.00);
balanca2.setPesoReal(170.00);
balanca2.setProduto(produto);
balancaDAO.persist(balanca2);
embalagem1.setId((long) 1);
embalagem1.setDescComposicao("Acido Manxúrico PHO2-N2-OH-");
embalagem1.setDescRegistro("INPEV-V20");
embalagem1.setDescricaoEmbalagem("Embalagem de Alumínio");
embalagem1.setGTIN("123456789101");
embalagem1.setPesoReferencia("300G");
embalagemDAO.persist(embalagem1);
embalagem2.setId((long) 2);
embalagem2.setDescComposicao("Acido Manxúrico PHO2-N2-OH-");
embalagem2.setDescRegistro("INPEV-V20");
embalagem2.setDescricaoEmbalagem("Embalagem de Alumínio");
embalagem2.setGTIN("123456789101");
embalagem2.setPesoReferencia("150G");
embalagemDAO.persist(embalagem2);
List<Balanca> pesagens = new ArrayList<Balanca>();
pesagens.add(balanca1);
pesagens.add(balanca2);
List<Embalagem> embalagens = new ArrayList<Embalagem>();
embalagens.add(embalagem1);
embalagens.add(embalagem2);
produto.setBalanca(pesagens);
produto.setEmbalagem(embalagens);
produtoDAO.persist(produto);
System.out.println("Voce persistiu os objetos: "+
balanca1.toString() +
balanca2.toString() +
embalagem1.toString()+
embalagem2.toString()+
produto.toString());
}
O produto insere, a balança insere mas quando vou inserir a segunda balança dá o erro de detached em produto:
detached entity passed to persist: br.com.jayres.previsao.model.Produto
As anotações na classe produto são:
@Entity
public class Produto {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="produto_id")
private Long id;
private String nomeProduto;
private String descricaoProduto;
private String registroProduto;
@OneToMany(targetEntity=br.com.jayres.previsao.model.Embalagem.class, orphanRemoval=true)
private List<Embalagem> embalagem;
@OneToMany(targetEntity=br.com.jayres.previsao.model.Balanca.class, orphanRemoval=true)
private List<Balanca> balanca
Valeu!