Erro com like %% - Hibernate + Criteria  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
JeffersonJCosta
JavaEvangelist

Membro desde: 20/12/2007 13:38:59
Mensagens: 318
Offline

Pessoal,

Estou com um problema na hora de validar meu login aqui, estou usadno o seguinte metodo:



O problema é que se eu tiver um usuario com o login teste e o outro com o login teste2, eu obtenho a seguinte mensagem de erro:

javax.servlet.ServletException: org.hibernate.NonUniqueResultException: query did not return a unique result: 2

Tentei colocar os sinais de percent antes do atributo login, como mostrado acima, para ficar parecido com SQL (like %login%) e com isso me trazer apenas do banco o que bate exatamente com o diigtado, mas nao foi, como sou novo com hibernate _ criteria, queria a ajuda de voces.

Desde ja agradeço.
pm
JavaEvangelist

Membro desde: 28/01/2005 12:42:15
Mensagens: 438
Offline

Cara....

Acredito que se voce remover os wildcards no like deva funcionar

tiozao_bp
Entusiasta Java

Membro desde: 31/07/2007 15:20:05
Mensagens: 19
Offline

login deve ser unico, entao não faz sentido ter esses "%" na consulta pois com esses "%" vc podera receber mais de um registro pela busca
E ter essa exception que vc recebeu.
JeffersonJCosta
JavaEvangelist

Membro desde: 20/12/2007 13:38:59
Mensagens: 318
Offline

Tirei os sinais de percent porem continuo tendo o mesmo problema
Ficou assim:



LoginAction:


UsuarioDao.VerificarSenha


Sera que o problema esta nesse metodo ValidarSenha??
Soh me aparece o erro quando tento logar com o login jefferson ou jefferson12
tiozao_bp
Entusiasta Java

Membro desde: 31/07/2007 15:20:05
Mensagens: 19
Offline

como eu mensionei anteriormente o login deveria ser unico com isso a busca deveria utilizar a Restrictions.eq e não Restrictions.ilike
é diferente vc consultar com "... where campo = "xxx" " e "...where campo like "xxx" "
JeffersonJCosta
JavaEvangelist

Membro desde: 20/12/2007 13:38:59
Mensagens: 318
Offline

Coloquei o Restrictions.eq("login", login); e nada, eu ja fazia assim, mas quando começou esse erro eu fiz um teste com ilike.
Muito estranho isso
lalbertorj
Smalltalk
[Avatar]

Membro desde: 03/03/2010 16:29:12
Mensagens: 4
Localização: Duque de Caxias - RJ
Offline

Camarada e o seguinte o seu HQL está retornando 2 linhas do banco ou seja

se você esta informando o login = teste

% teste % o banco vai pegar tudo o que tem a palavra teste

remova o %

Vlw!

GoogleTalk : lalbertorj@gmail.com
[Email] [MSN]
JeffersonJCosta
JavaEvangelist

Membro desde: 20/12/2007 13:38:59
Mensagens: 318
Offline

Eu já removi e nao funcionou.
Ficou assim:
jcmird
JavaGuru
[Avatar]

Membro desde: 21/08/2007 01:43:38
Mensagens: 244
Offline

Desconfio que exista dois login teste na sua tabela. O campo login é primary key? Faz um select * from tabela where login="teste", só para ver quantos registros são retornados.

Abraços,


JeffersonJCosta
JavaEvangelist

Membro desde: 20/12/2007 13:38:59
Mensagens: 318
Offline

Nao tem dois login teste nao, toda vez antes de salvar um novo usuario eu verifico se existe o login no Bd ou nao, estranho que aqui no PC do trabalho funcionou, aqui tenho o login jefferson, jefferson2 e jefferson26 e funcionou, o problema esta acontecendo quando rodo o mesmo projeto no PC de casa, mas as configurações estao iguais nos dois computadores, vou fazer mais teste e vejo o resultado
JeffersonJCosta
JavaEvangelist

Membro desde: 20/12/2007 13:38:59
Mensagens: 318
Offline

Pessoal, falei errado. O que está acontecendo é isso: se eu digitar jefferson1 e jefferson26 funciona, mas se eu digitar só jefferson, me retorna erro, dizendo que a query nao retornou um unico resultado, retorna 3
O que pode ser?

Meu ValidarLogin esta assim:
JeffersonJCosta
JavaEvangelist

Membro desde: 20/12/2007 13:38:59
Mensagens: 318
Offline

Alguem sabe o que posso fazer para nao ter mais esse problema?
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team