[RESOLVIDO] Consulta com criteria utizando propriedade de um enum  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
thiagocg
Virtual Machine Man
[Avatar]

Membro desde: 08/04/2006 11:07:07
Mensagens: 541
Localização: Campo Grande - MS
Offline

Olá pessoal, estou com problemas em uma consulta onde o usuario informa uma string qualquer e a consulta deve verificar a presença dessa string dentro de uma propriedade de um enum.

um trecho da minha classe enum:


minha consulta:


Na consulta acima caso o usuário informe email deveria retornar as enumerações exibidas como exemplo no inicio do post, mas é disparado o seguinte erro após o criteria.list():


Qualquer ajuda é bem vinda!

[]'s

This message was edited 1 time. Last update was at 17/03/2011 10:55:10


________________________________
Thiago Araujo da Silva
Analista de Sistemas
Tecnólogo em Processamento de Dados (Estácio - CG/MS)
Especialista em Desenvolvimento de Aplicações em Java (Uniderp - CG/MS)
[Email] [MSN]
Mathias85
Entusiasta Java

Membro desde: 25/03/2008 10:35:58
Mensagens: 15
Localização: Rio de Janeiro
Offline


Thiago...

normalmente o é o código do ENUM que é salvo no banco de dados, a menos que você especifique o contrário, que no caso é salvar outra propriedade do ENUM.
Você tem que ver o que ta salvando no banco de dados, se é o código do ENUM ou a string de descrição, ou algo do tipo.
[MSN]
thiagocg
Virtual Machine Man
[Avatar]

Membro desde: 08/04/2006 11:07:07
Mensagens: 541
Localização: Campo Grande - MS
Offline

Olá Mathias, obrigado pela respota, o enum é composto por um identificador (inteiro) , nome(uma constante), e descricao(uma string). Neste caso o que é guardado no bd é o identificador ou seja um inteiro, pelo que percebi mesmo criando ou não alias para a propriedade ele tenta fazer um join e não consegue.

O que eu queria é algo como pegar um getDescricao e usar o ilike nele... Vou continuar pesquisando!

Grato!

[]'s

This message was edited 3 times. Last update was at 17/03/2011 10:19:34


________________________________
Thiago Araujo da Silva
Analista de Sistemas
Tecnólogo em Processamento de Dados (Estácio - CG/MS)
Especialista em Desenvolvimento de Aplicações em Java (Uniderp - CG/MS)
[Email] [MSN]
Mathias85
Entusiasta Java

Membro desde: 25/03/2008 10:35:58
Mensagens: 15
Localização: Rio de Janeiro
Offline

Thiago, tem como você substituir o comportamento padrão de salvar o ordinal do enum no banco, basta adicionar

no mapeamento da propriedade do tipo enum que será persistida. Nesse caso ele passará a salvar a representação String do enum.

[MSN]
thiagocg
Virtual Machine Man
[Avatar]

Membro desde: 08/04/2006 11:07:07
Mensagens: 541
Localização: Campo Grande - MS
Offline

Legal essa possibilidade, mas o problema é que trabalho com base legada e não posso fazer alterações no esquema do bd.
Sera que não existe uma outra possibilidade sem alterar o esquema do bd?

Mas como o enum ñ possui muitas posições resolvi temporariamente de uma maneira ñ muito elegante (contains em cada posição da lista devolvida apos aplicar os outros filtros).


[]'s

________________________________
Thiago Araujo da Silva
Analista de Sistemas
Tecnólogo em Processamento de Dados (Estácio - CG/MS)
Especialista em Desenvolvimento de Aplicações em Java (Uniderp - CG/MS)
[Email] [MSN]
Mathias85
Entusiasta Java

Membro desde: 25/03/2008 10:35:58
Mensagens: 15
Localização: Rio de Janeiro
Offline

Outra possibilidade é criar uma lista com os enums que se encaixam nesse filtro, e na busca no bd você usa

isso faz com que o bd procure pelos códigos da lista de enums que você pré-filtrou.
[MSN]
 
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team