Galera eu tenho um relacionamento n pra m e usei o hibernate. Ele criou as classes “A”, “B”, “A_has_B” e “A_has_BId”. A insercao eu consegui fazer, agora como que eu faco uma busca?
VLW
Galera eu tenho um relacionamento n pra m e usei o hibernate. Ele criou as classes “A”, “B”, “A_has_B” e “A_has_BId”. A insercao eu consegui fazer, agora como que eu faco uma busca?
VLW
Basilio,
Não entendi essas definições que você informou… Você poderia postar aqui as classes e com as devidas anotações para persistência ?
PS.: Quanto mais vc detalhar seu problema mais fácil as pessoas poderão te ajudar…
@braços
Se vc tem uma tabela A e uma tabela B e essas tabelas tem relacionamento n pra m vc terá uma terceira tabela tabelaA_has_tabelaB. O hibernate mapeia essas 3 tebelas em classes, mas cria uma quarta classe com o nome tabelaA_has_tabelaBId. A Classe tabelaA_has_tabelaBId tem os valores das chaves das tabelas A e B, e a classe tabelaA_has_tabelaB tem um objeto da classe tabelaA_has_tabelaBId.
Basilio,
Ok. E como ficaram as anotações em suas classes A e B?
A princípio basta vc escrever uma HQL pra buscar os objetos desejados.
public A getA(Long idA) {
A a = null;
EntityManagerFactory emf = Persistence.createEntityManagerFactory("DATASOURCE");
EntityManager em = emf.createEntityManager();
EntityTransaction et = null;
try {
et = em.getTransaction();
et.begin();
StringBuffer sql = new StringBuffer();
sql.append(" FROM A a ");
sql.append(" LEFT JOIN FETCH a.listadeBs ");
sql.append(" WHERE a.idA = :idA ");
Query q = em.createQuery(sql.toString());
q.setParameter("idA", idA);
a = q.getSingleResult();
et.commit();
} catch(Exception ex) {
ex.printStackTrace();
} finally {
if (et != null && et.isActive()) {
et.rollback();
}
if (em != null && em.isOpen()) {
em.close();
}
}
return a;
}
Veja este exemplo, espero que te ajude.
@braços