Possuo 2 classes, por exemplo, Pessoa e Carro, e estas tem relação 1:n, quando carrego um objeto Pessoa e quero carregar juntamente a este a List que pertence ao objeto Pessoa.
Mas não cheguei a uma conclusão de como executar. O Meu código é parecido com este,
//Classe Fontes....@OneToMany(fetch=FetchType.EAGER)privateList<Contas>contasList;....//FontesImppublicFontesprocurar(intId){emf=Persistence.createEntityManagerFactory("SIAGPU");em=emf.createEntityManager();em.getTransaction().begin();fontesDAO=newFontesDAO(em,Fontes.class);Fontesfonte=fontesDAO.load(Id);em.getTransaction().commit();em.close();emf.close();returnfonte;}//DAOpublicFontesload(intid){returnem.find(Fontes.class,id);}//Classe TesteFontesfonte=fonte_imp.procurar(250);System.out.print(fonte.getContasList().size());//A Classe Fonte faz a relação 1:n com a classe Conta, e no BD há 3 registros que fiz com a fonte 250//O Resultado printado é 0
Achei estranho, pois, não parece divergir do exemplo do post.
Hebert_Coelho
Duas coisas:
Qual implementação do JPA você está utilizando? OpenJPA? Hibernate? O que?
Se você colocar o fonte.getContasList().size() após o Fontes fonte = fontesDAO.load(Id); o que acontece?
B
bobleujr
Estou usando o hibernate, e deu 0 denovo. hehe
Hebert_Coelho
bobleujr:
Estou usando o hibernate, e deu 0 denovo. hehe
Qual consulta você fez no banco de dados para você ter certeza que ele teria 3 itens?
B
bobleujr
Não entendi sua pergunta, mas veja como a recíproca é verdadeira,
//Classe TesteFontesfonte=fonte_imp.procurar(250);List<Contas>list=conta_imp.pesquisaByFonte(fonte);System.out.println(list.size());//Classe ContasImppublicList<Contas>pesquisaByFonte(Fontesfonte){emf=Persistence.createEntityManagerFactory("SIAGPU");em=emf.createEntityManager();em.getTransaction().begin();contasDAO=newContasDAO(em,Contas.class);List<Contas>list=this.contasDAO.buscaPorFonte(fonte);em.getTransaction().commit();em.close();emf.close();returnlist;}//Classe ContasDAOpublicList<Contas>buscaPorFonte(Fontesfonte){Queryquery=em.createNamedQuery("Contas.findByFonte");query.setParameter("fonte",fonte);List<Contas>contas=query.getResultList();returncontas;}// O Resultado foi 3
Hebert_Coelho
Como estão essas classes? Tem como você colocar apenas elas e seus relacionamentos e os ids? Não precisa colocar mais dados ñ.
Em um relacionamento bidirecional você precisa sempre ter alguem com mappedBy. Caso você não faça isso o JPA irá entender que um relacionamento é distinto do outro. [=