Boa Tarde, gostaria de saber se alguém pode me informar se quando uso o Hibernate, é possivel estabelecer inners joins…, encontrei somente inserts básicos e selects…, gostaria de saber se alguém pode me indicar material que trate do uso de oracle, mysql tratando desta abordagem. por ex: como receber o resultado de fuctions procedures do oracle, e se isso é usado com ou sem o hibernate…
Hibernate e inner joins
4 Respostas
ele faz os inner joins automaticamente de acordo com mapeamento da classe … e nesse ponto ele não depende do banco de dados…
a unica parte que depende de DB é nas chamadas de procedures, pois cada banco usa como ker isso o.O e o Hibernate não cobre essa parte, apesar de ter como chamar procedures através dele…
um exemplo de inner join com hibernate é assim
public class Cidade {
@Id @GeneratedValue
private Long id;
private String nome;
@ManyToOne(fetch=FetchType.EAGER)
private Estado estado;
}
public class Estado {
@Id @GenereatedValue
private Long id;
private String nome;
@ManyToOne(fetch=FetchTpe.EAGER)
private Pais pais;
}
quando vc por exemplo, carregar um cidade, ele vai fazer os join sozinho… da mesma forma é para o OneToMany
private Pais pais;
VALEU Lavieri … MUITO BOA DICA… AGORA SEI QUE POSSO FAZER ISSO, POR QUE EU USAVA DIRETO JDBC E ESTABELECIA AS STRINGS DE INNER LÁ… OBRIGADO.
Além da técnica citada pelo Lavieri, você também pode fazer inner join’s através de HQL e da API de Critérios. Recomendo consultar o link abaixo:
http://docs.jboss.org/hibernate/stable/core/reference/en/html/performance.html#performance-fetching
Galera, surgiu uma dúvida aqui com INNER JOIN com hibernate.
Meu projeto estava em andamento, logo tenho um Objeto Entrevistador que é um @Component do Vraptor, ou seja, é uma tabela no meu banco, e outros objetos que não fazer parte, como Usuario.
Preciso fazer um inner join, entre a tabela entrevistador e usuario, sendo que não existe relacionamento de chaves estrangeiras, ou seja, faço tudo na mão na hora de fazer os selects.
Estou tentando fazer assim:
public List<Object> lista() {
List<Object> list = (List<Object>) session.createCriteria(Entrevistador.class).setFetchMode("usuario", FetchMode.JOIN)
.add( Restrictions.eq("ativo", 0) )
.list();
NO entanto, quando tento executar isso, me é retornado um erro, falando que o VRaptior 3.1.0 não está no classpath, sendo que ele está, e outras consultas simples, e updates e saves funcionam numa boa.
Gostaria de ajuda para realizar essa busca com INNER JOIN. Já li bastante coisa na documentação do Hibernate.
Outro problema é saber qual o tipo de retorno devo fazer
List ?
ArrayList ?
List ?
Dados:
tabela Entrevistador
ID e ID_USUARIO
table Usuario
ID
ID_USUARIO “referencia” a tabela Usuario pelo ID da mesma.
Aguardo qualquer ajuda, ou dica. Obrigado