Galera tenho esse método que consulta um aluno passando sua matricula e instituicao a qual ele pertence. O que eu quero é que ele retorne o Aluno
que possuí essa matricula e instituicao e que esteja com status ativo. Entretanto o hibernate me lança uma exceção dizendo que não consegue resolver
a propriedade instituicao que é uma chave estrageira de outra tabela como posso solucionar tal problema agradeço ajuda..
publicAlunoconsultarAluno(Stringmatricula,Stringinstituicao){Alunoaluno=newAluno();booleanstate=true;session=CreateSessionFactory.openSession();tx=session.beginTransaction();Stringquery="from Aluno a where a.cpfMatricula=:matricula and a.status=:state and a.identificador=instituicao";aluno=(Aluno)session.createQuery(query).setParameter("matricula",matricula).setParameter("state",state).setParameter("instituicao",instituicao);returnaluno;}
você está passando o parametro instituição sem os dois pontos na frente
a.identificador=instituicao
quando o correto é
a.identificador=:instituicao
V
vinkello
Ainda sim cara ele apresenta a mesma falha mesmo eu colocando o : ele diz que não consegue
resolver a propriedade identificador. Essa propriedade é uma chave estrageira agradeço ajuda…
I
igor_henrique1
geralmente esse tipo de erro ocorre comigo quando eu erro o nome do atributo na classe, por exemplo vc declarar na sua classe aluno como ident e chamar na hql como identificador, lembrando que hql é o nome do atributo e não o nome da coluna no banco, posta seu código ai, e o stack trace também se for possível
V
vinkello
Minha classe aluno e seus atributos o método consultar é o mesmo a diferença é que eu coloquei os : e o stak segue abaixo.
opa, ta la o erro rsssss, se vc quer procurar pelo atributo identificador que está dentro da classe Instituição, sua HQL deveria ser mais ou menos assim
Resolvido vlw veih esqueci do UniqueResult tb agradeço pela ajuda hehe vlw mesmo…
I
igor_henrique1
opa, disponha hehe
V
vinkello
Cara desculpa incomodar mais uma vez mas tipo e se eu quiser fazer uma consulta com like como é q eu faço. Acredito que o erro
esteja na query agradeço mais uma vez.
Stringquery="from Aluno a where a.nome like criterio and a.status=:state and a.instituicao.identificador=:instituicao";
V
vinkello
Stak
Exception in thread "main" org.hibernate.QueryParameterException: could not locate named parameter [criterio]
at org.hibernate.engine.query.ParameterMetadata.getNamedParameterDescriptor(ParameterMetadata.java:75)
at org.hibernate.engine.query.ParameterMetadata.getNamedParameterExpectedType(ParameterMetadata.java:81)
at org.hibernate.impl.AbstractQueryImpl.determineType(AbstractQueryImpl.java:413)
at org.hibernate.impl.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:383)
at br.com.simuladoOnline.persistencia.RepositorioAluno.listaAluno(RepositorioAluno.java:81)
at br.com.simuladoOnline.teste.TesteConsultas.main(TesteConsultas.java:16)
I
igor_henrique1
vc ta passando como parametro né?
like:criterio
Sempre com dois pontos quando se trata de parametro
V
vinkello
To passando como parametro sim e funcionou mas como eu faço para encontra em qualquer lugar do nome do cara esse criterio
como fica a query.
I
igor_henrique1
não tenho certeza, mas tenta fazer assim
like'%':criterio'%'
se não der certo, tenta contactenar o % ao inicio e final do seu criterio antes de passar ele como parametro.
V
vinkello
Não funcionou cara :? em nenhuma das duas situações.A primeira que você sugerio da problema e concatenando não exibe 0. Vou passar como está o código
pra vc visualizar.
publicCollection<Aluno>listaAluno(Stringcriterio,Stringinstituicao){
booleanstate=true;session=CreateSessionFactory.openSession();Stringquery="from Aluno a where a.nome like '%':criterio'%' and a.status=:state and a.instituicao.identificador=:instituicao";Listc=session.createQuery(query).setParameter("criterio",criterio).
setParameter("state",state).setParameter("instituicao",instituicao).list();returnc;}
I
igor_henrique1
vc fazendo um String nomeAluno = "%"+criterio+"%"; não deu certo?
com a sua hql
Stringquery="from Aluno a where a.nome like :nomeAluno and a.status=:state and a.instituicao.identificador=:instituicao"
e fazendo um setParameter("nomeAluno",nomeAluno)
ai já não sei mais também rsssss, teria que abrir a documentação do Hibernate e dar uma lida sobre like.
V
vinkello
resolveu brother tive q setar fora mesmo vlw msm foi uma concatenação tronxa aqui q eu fiz kkkkkk mas agora tá na boa…