Buenas,estou desenvolvendo um sistema em camadas(pacotes),para exercitar os conceitos de aula e me deparei com uma dúvida Eu gostaria de criar uma classe produto,a mesma possui atributos que são referencias de outras classes :
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private float preco;
private String nome;
private int qtd;
@ManyToMany
private List<Fornecedor> fornecedor;
@ManyToOne
private Categoria categoria;
Na minha camada em que é semelhante a DAO seguindo o conteúdo da aula teria que persistir todas as classes relacionadas no caso Fornecedor e categoria alem da classe do produto que é a que queremos criar.
public Produto inserir(Produto produto,List<Fornecedor> listaFornecedores ,Categoria categoria) {
listaFornecedores=new ArrayList<>();
Conexao con = new Conexao();
EntityManager em = con.getEntidade();
em.getTransaction().begin();
em.persist(listaFornecedores);
em.persist(categoria);
em.persist(produto);
em.getTransaction().commit();
em.close();
return produto;
}
Ops : Os parâmetros são para referenciar os objetos que já estão instanciados afim de destacar é aquele objeto (valor) que quero colocar no meu produto ou seja a categoria daquele meu objeto vou receber como parâmetro e meu produto terá aquela categoria Classe teste :
public static void main(String[] args) {
Categoria cat = new Categoria("Viajem", "nao to afim de escrever hehe");
Fornecedor fornecedor = new Fornecedor( "Alimentos", 122354,"Alimentos@gmail.com" );
List<Fornecedor> listaFornecedores =new ArrayList<>();
listaFornecedores.add(fornecedor);
Produto produto = new Produto(50,"Talco",3 ,listaFornecedores,cat);
ProdutoRN produtoRN=new ProdutoRN();
produtoRN.inserir(produto, listaFornecedores, cat);
}
Entretanto da um erro em que eu não posso persistir uma lista,mas então como posso representar um produto que possui varios fornecedores
List<fornecedor> fornecedores
ERRO
Exception in thread "main" java.lang.IllegalArgumentException: Unknown entity: java.util.ArrayList
at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:786)
at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:767)
at sistemavendas.rn.ProdutoRN.inserir(ProdutoRN.java:20)
at sistemavendas.TesteProduto.main(TesteProduto.java:22)
Desde já grato a atenção,forum ta me ajudando muito hehe :D