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

Dúvida referente a persistir um arrayList

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

1 resposta
solução!

Você precisa persistir cada um dos fornecedores da lista. O hibernate reclamou que você passou uma lista como argumento para o persist.