Criando query nativa com Hibernate

2 respostas
F

Oi pessoal tudo bom,

estou precisando criar uma query um pouco complexa com hibernate, como essa abaixo

select * from estado where pai_id = (select pais.pai_id from cidade, estado, pais where cidade.cid_id = 18 and cidade.est_id = estado.est_id and estado.pai_id = pais.pai_id) Porém só consigo criar query no hibernate usando criteria(porém não consigo criar essa query complexa com criteria), tentei usar createSQLQuery, mas não consegui e devido a este problema não sei como interagir com o resultado do select, alguém poderia me dar uma ajuda, em como montar esta query com a classe Criteria ou Query do hibernate?

Agradeço a todos q puderem ajudar

2 Respostas

A

cara,

coloca as suas entidades ai para poder te ajudar.

t+

F
Consegui criar a query usando HQL, isso ja ajudaria porem não consigo exibir os resultados usando o System.out.println
Query query1 = sessao.createQuery("from Cidade c join c.estado e join e.pais p where c.cid_nom = :cidade ")                
                .setString("cidade", "Belo Horizonte");
        List list = query1.list();
Ai estao minhas classes modelo que usei para gerar minhas entidades Pais
@Id
@SequenceGenerator(name="generator_pais",sequenceName="sequence_pais")
@GeneratedValue(generator="generator_pais")
private Integer pai_id;

@Column(unique=true)
private String pai_nom;

@Column
private Integer pai_codigo;
Estado
@Id
    @SequenceGenerator(name="generator_estado",sequenceName="sequence_estado")
    @GeneratedValue(generator="generator_estado")
    private Integer est_id;

    @Column(length=100,unique=true)
    private String est_nom;

    @Column(length=2)
    private String est_sigla;
    
    @ManyToOne
    @ForeignKey(name="estado_fkey_pais_01")
    @JoinColumn(name="pai_id")
    private Pais pais;
Cidade
@Id
    @SequenceGenerator(name="generator_cidade",sequenceName="sequence_cidade")
    @GeneratedValue(generator="generator_cidade")
    private Integer cid_id;
    
    @ManyToOne
    @ForeignKey(name="cidade_fkey_estado_01")
    @JoinColumn(name="est_id")
    private Estado estado;
 
    @Column(length=100,unique=true)
    private String cid_nom;
Criado 13 de outubro de 2011
Ultima resposta 14 de out. de 2011
Respostas 2
Participantes 2