[RESOLVIDO]Problemas com API Criteria e Hibernate!

3 respostas
FabioNoth

Pessoal, Sou iniciante e
estou utilizando Hibernate. Vi aqui no GUJ mesmo que a API Criteria serve para resolver o meu problema.
Tenho uma classe Paciente que possui Triagem. Nesta triagem tenho uma variável prioridade e área. (Ambas do tipo String)

Tentei fazer um service aqui que se o CheckBox for selecionado na tela então a consulta receber true.
Inclusive peguei alguns exemplos do Forum mais não consegui fazer.

public List<Paciente> listRelatorio(String busca, Boolean alta,
			Boolean media, Boolean baixa, Boolean ortopedia,
			Boolean neurologia, Boolean cardiorrespiratorio,
			Boolean poliambulatorio, Boolean naodefinido) {
		Session session = HibernateUtil.getSessionFactory().openSession();
		Criteria consulta = session.createCriteria(Paciente.class);
		Disjunction ou = Restrictions.disjunction();
		ou.add(Expression.like("nome", "%" + busca + "%"));
		consulta.createAlias("triagem", "t");
		if (alta) {
			ou.add(Restrictions.eq("t.prioridade", "alta"));
		}
		if (media) {
			ou.add(Restrictions.eq("t.prioridade", "media"));
		}
		if (baixa) {
			ou.add(Restrictions.eq("t.prioridade", "baixa"));
		}
		if (ortopedia) {
			ou.add(Restrictions.eq("t.area", "ortopedia"));
		}
		if (neurologia) {
			ou.add(Restrictions.eq("t.area", "neurologia"));
		}
		if (cardiorrespiratorio) {
			ou.add(Restrictions.eq("t.area", "cardiorrespiratorio"));
		}
		if (poliambulatorio) {
			ou.add(Restrictions.eq("t.area", "poliambulatorio"));
		}
		if (naodefinido) {
			ou.add(Restrictions.eq("t.area", "nao definido"));
		}
		consulta.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
		return consulta.list();
	}

Desde já agradeço a atenção de todos! :stuck_out_tongue:

3 Respostas

Hebert_Coelho

Adicione essa configuração ao seu arquivo de configurações do Hibernate

Nome: hibernate.show_sql valor: true

Assim, ele vai mostrar a query executada e você poderá alterar o que estiver errado.

FabioNoth

Ele mostra essa query;
Executa o que eu quero.

Talvez seja um erro, daqueles que não une os resultados esperados!
Tipo, se eu selecionar só um tipo. Ele retorna o resultado esperado.
Agora se eu selecionar vários. Ele não retorna!

Hibernate: 
    select
        usuario0_.id as id2_,
        usuario0_.bairro as bairro2_,
        usuario0_.celular as celular2_,
        usuario0_.cidade as cidade2_,
        usuario0_.cpf as cpf2_,
        usuario0_.dataCadastro as dataCada6_2_,
        usuario0_.email as email2_,
        usuario0_.endereco as endereco2_,
        usuario0_.nacionalidade as nacional9_2_,
        usuario0_.nascimento as nascimento2_,
        usuario0_.nome as nome2_,
        usuario0_.rg as rg2_,
        usuario0_.senha as senha2_,
        usuario0_.telefone as telefone2_,
        usuario0_.tipo as tipo2_,
        usuario0_.usuario as usuario2_ 
    from
        Usuario usuario0_
Hibernate: 
    select
        this_.id as id1_5_,
        this_.bairro as bairro1_5_,
        this_.celular as celular1_5_,
        this_.cidade as cidade1_5_,
        this_.cpf as cpf1_5_,
        this_.dataCadastro as dataCada6_1_5_,
        this_.email as email1_5_,
        this_.endereco as endereco1_5_,
        this_.estagiario_id as estagiario16_1_5_,
        this_.nacionalidade as nacional9_1_5_,
        this_.nascimento as nascimento1_5_,
        this_.nome as nome1_5_,
        this_.profissão as profissão1_5_,
        this_.rg as rg1_5_,
        this_.status as status1_5_,
        this_.telefone as telefone1_5_,
        this_.triagem_id as triagem17_1_5_,
        this_.usuario_id as usuario18_1_5_,
        estagiario3_.id as id0_0_,
        estagiario3_.bairro as bairro0_0_,
        estagiario3_.celular as celular0_0_,
        estagiario3_.cidade as cidade0_0_,
        estagiario3_.cpf as cpf0_0_,
        estagiario3_.dataCadastro as dataCada6_0_0_,
        estagiario3_.email as email0_0_,
        estagiario3_.endereco as endereco0_0_,
        estagiario3_.nacionalidade as nacional9_0_0_,
        estagiario3_.nascimento as nascimento0_0_,
        estagiario3_.nome as nome0_0_,
        estagiario3_.periodo as periodo0_0_,
        estagiario3_.ra as ra0_0_,
        estagiario3_.rg as rg0_0_,
        estagiario3_.telefone as telefone0_0_,
        t1_.id as id3_1_,
        t1_.area as area3_1_,
        t1_.caminhandoUsaMuletaCadeiraRodas as caminhan3_3_1_,
        t1_.encaminhamento as encaminh4_3_1_,
        t1_.estaCaminhando as estaCami5_3_1_,
        t1_.fezCirurgiaQuando as fezCirur6_3_1_,
        t1_.jaFezFisiotarapiaParaEsteProblema as jaFezFis7_3_1_,
        t1_.jaFezFisioterapiaAqui as jaFezFis8_3_1_,
        t1_.obs as obs3_1_,
        t1_.paciente_id as paciente15_3_1_,
        t1_.prioridade as prioridade3_1_,
        t1_.problema as problema3_1_,
        t1_.quandoAconteceu as quandoA12_3_1_,
        t1_.statusTriagem as statusT13_3_1_,
        t1_.transporte as transporte3_1_,
        t1_.usuario_id as usuario16_3_1_,
        paciente5_.id as id1_2_,
        paciente5_.bairro as bairro1_2_,
        paciente5_.celular as celular1_2_,
        paciente5_.cidade as cidade1_2_,
        paciente5_.cpf as cpf1_2_,
        paciente5_.dataCadastro as dataCada6_1_2_,
        paciente5_.email as email1_2_,
        paciente5_.endereco as endereco1_2_,
        paciente5_.estagiario_id as estagiario16_1_2_,
        paciente5_.nacionalidade as nacional9_1_2_,
        paciente5_.nascimento as nascimento1_2_,
        paciente5_.nome as nome1_2_,
        paciente5_.profissão as profissão1_2_,
        paciente5_.rg as rg1_2_,
        paciente5_.status as status1_2_,
        paciente5_.telefone as telefone1_2_,
        paciente5_.triagem_id as triagem17_1_2_,
        paciente5_.usuario_id as usuario18_1_2_,
        usuario6_.id as id2_3_,
        usuario6_.bairro as bairro2_3_,
        usuario6_.celular as celular2_3_,
        usuario6_.cidade as cidade2_3_,
        usuario6_.cpf as cpf2_3_,
        usuario6_.dataCadastro as dataCada6_2_3_,
        usuario6_.email as email2_3_,
        usuario6_.endereco as endereco2_3_,
        usuario6_.nacionalidade as nacional9_2_3_,
        usuario6_.nascimento as nascimento2_3_,
        usuario6_.nome as nome2_3_,
        usuario6_.rg as rg2_3_,
        usuario6_.senha as senha2_3_,
        usuario6_.telefone as telefone2_3_,
        usuario6_.tipo as tipo2_3_,
        usuario6_.usuario as usuario2_3_,
        usuario7_.id as id2_4_,
        usuario7_.bairro as bairro2_4_,
        usuario7_.celular as celular2_4_,
        usuario7_.cidade as cidade2_4_,
        usuario7_.cpf as cpf2_4_,
        usuario7_.dataCadastro as dataCada6_2_4_,
        usuario7_.email as email2_4_,
        usuario7_.endereco as endereco2_4_,
        usuario7_.nacionalidade as nacional9_2_4_,
        usuario7_.nascimento as nascimento2_4_,
        usuario7_.nome as nome2_4_,
        usuario7_.rg as rg2_4_,
        usuario7_.senha as senha2_4_,
        usuario7_.telefone as telefone2_4_,
        usuario7_.tipo as tipo2_4_,
        usuario7_.usuario as usuario2_4_ 
    from
        Paciente this_ 
    left outer join
        Estagiario estagiario3_ 
            on this_.estagiario_id=estagiario3_.id 
    inner join
        Triagem t1_ 
            on this_.triagem_id=t1_.id 
    left outer join
        Paciente paciente5_ 
            on t1_.paciente_id=paciente5_.id 
    left outer join
        Usuario usuario6_ 
            on t1_.usuario_id=usuario6_.id 
    left outer join
        Usuario usuario7_ 
            on this_.usuario_id=usuario7_.id
FabioNoth

Pessoal consegui resolver olhando este tópico aqui!

http://www.guj.com.br/java/209176-or-no-hibernate

Criado 20 de novembro de 2011
Ultima resposta 20 de nov. de 2011
Respostas 3
Participantes 2