Preciso de uma ajudinha urgente, estou tentando passa uma String como parametro para uma HQL, a String vem de um form, e está preenchida corretamente.
porem quando envio via getParameter o HQL não retorna nada
o código é este
Stringras=request.getParameter("'510154','503681'");QueryqueryEmail=sessionEmail.createQuery(" from Aluno aluno "+" "+" where aluno.ra in ( :ras ) "+" ");queryEmail.setParameter("ras",ras.toString());List<Aluno>aluno=queryEmail.list();System.out.println(aluno);
‘510154’,‘503681’ é o nome do seu parâmetro? Como vc está setando esse parâmetro?
a variavel ras está vindo com qual valor?
M
maugloju
o valor da variavel é ‘510154’,‘503681’
está vindo fe um form via post
ela vem assim
eu tentei facilitar a compreensão mas ficou pior
deculpe
a variavel vem carregada em ras com o valor ‘510154’,‘503681’
aí eu tenho que passar como parametro
O
overkill
maugloju:
Olá
Preciso de uma ajudinha urgente, estou tentando passa uma String como parametro para uma HQL, a String vem de um form, e está preenchida corretamente.
porem quando envio via getParameter o HQL não retorna nada
o código é este
Stringras=request.getParameter("'510154','503681'");QueryqueryEmail=sessionEmail.createQuery(" from Aluno aluno "+" "+" where aluno.ra in ( :ras ) "+" ");queryEmail.setParameter("ras",ras.toString());List<Aluno>aluno=queryEmail.list();System.out.println(aluno);
onde ras são os numeros de matricula dos alunos.
Este HQL não está me retornando nada.
Se alguem puder me ajudar eu agradeço.
Amigo vc usou isso -> String ras = request.getParameter("'510154','503681'");
nao deve ser string neste caso usse uma Lista de Strings por exemplo um mesmo uma lista de Integer
List ras = new ArrayList();
ras.add(510154);
ras.add(503681);
ai depois
queryEmail.setParameter("ras", ras);
Entendeu ??
M
maugloju
Obrigado pela atenção, mas a variavel ras é realmente uma String, que eu quero encaixar no HQL.
Eu coloquei um System.out.println(ras) para ver o valor que está chegando do form, e está certinho = ‘510154’,‘503681’
O campo é alfanumerico, por exemplo poderia ser “‘a510154’,‘b503681’”
já tentei dar um setString(ras) mas tb não deu certo.
O
overkill
maugloju:
Obrigado pela atenção, mas a variavel ras é realmente uma String, que eu quero encaixar no HQL.
Eu coloquei um System.out.println(ras) para ver o valor que está chegando do form, e está certinho = ‘510154’,‘503681’
O campo é alfanumerico, por exemplo poderia ser “‘a510154’,‘b503681’”
já tentei dar um setString(ras) mas tb não deu certo.
é simples então amigo
List<String> ras = new ArrayList<String>();
ras.add("510154");
ras.add("503681");
ai depois
queryEmail.setParameter("ras", ras);
M
maugloju
Ok eu entendi, mas não é um arrayList, é uma String, as ‘’ e a , fazem parte do texto, náo é uma separação, o que eu preciso é colocar esta String no HQL
Query queryEmail = sessionEmail.createQuery(
" from Aluno aluno " +
" " +
" where aluno.ra in ( :ras ) " +
" ");
O
overkill
maugloju:
Ok eu entendi, mas não é um arrayList, é uma String, as ‘’ e a , fazem parte do texto, náo é uma separação, o que eu preciso é colocar esta String no HQL
Query queryEmail = sessionEmail.createQuery(
" from Aluno aluno " +
" " +
" where aluno.ra in ( :ras ) " +
" ");
Caro amigo esta faltando um estudo de JPA , se vc ver a documentacao do JPA quando se usa a clausula IN vc precisa passar sim um array list … se passar String com as aspas nunca vai funcionar
vc ao menos testou o que eu coloquei acima ??
O
overkill
maugloju:
Ok eu entendi, mas não é um arrayList, é uma String, as ‘’ e a , fazem parte do texto, náo é uma separação, o que eu preciso é colocar esta String no HQL
Query queryEmail = sessionEmail.createQuery(
" from Aluno aluno " +
" " +
" where aluno.ra in ( :ras ) " +
" ");
mesmo assim faltou a pergunta esta usando JPA ou Session do hibernate ???
M
maugloju
Ok, agora caiu a ficha, desculpe a eiinsistência.
Vlw
O
overkill
testa e da um retorno ai !
Dei uma olhada na documentacao do Hibernate tanto o JPA quando Hibernato pardão usam listas como parametro quando usado IN no HQL.
M
maugloju
Não deu certo, fiz o seguinte:
String rasTexto = request.getParameter("rasTexto");
List<String> ras = new ArrayList<String>();
ras.add(rasTexto);
Query queryEmail = sessionEmail.createQuery(
" from AlunoMicrosiga alunoMicrosiga " +
" " +
" where alunoMicrosiga.ra in ( :ras ) " +
" ");
queryEmail.setParameter("ras", ras);
List<AlunoMicrosiga> alunoMicrosiga = queryEmail.list();
Quando eu mando imprimir ras, fica assim
[510154
503683]
E se vc manda imprimeir o rasTexto antes de colocar ele na lista o que ele imprime ???
veja que é necessario adicionar um a um a lista !.
M
maugloju
aí imprimi normal
510154
503683
M
maugloju
fiz o seguinte e deu o mesmo erro
List<String> ras = new ArrayList<String>();
ras.add("510154");
ras.add("503683");
O
overkill
maugloju:
aí imprimi normal
510154
503683
ai que esta o porem da coisa … veja só
vc deve preencher a lista de String um a um dos itens veja um exemplo
List<String> ras = new ArrayList<String>();
ras.add("510154"); //primeiro valor
ras.add("503683"); //segundo valor
M
maugloju
No console do Apache no net beans imprimi certinho mas quando vai pro HQL dá o erro
java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.String
O
overkill
uso esse procedimento e funciona certinho … muito estranho pode colocar mais codigos o da busca e tal para ficar melhor de ver a aplicação ou metodo completo ??
List<String>ras=newArrayList<String>();for(inti=0;i<rasTexto.length;i++){ras.add(rasTexto[i]);}System.out.println(ras);System.out.println(rasTexto);QueryqueryEmail=sessionEmail.createQuery(" from AlunoMicrosiga alunoMicrosiga "+" "+" where alunoMicrosiga.ra in ( :ras ) "+" ");queryEmail.setParameter("ras",ras);List<AlunoMicrosiga>alunoMicrosiga=queryEmail.list();</blockquote>
M
maugloju
Desculpe o certo é
Stringras=request.getParameter("ras");String[]rasTexto=ras.split(ras);List<String>ras2=newArrayList<String>();for(inti=0;i<rasTexto.length;i++){ras2.add(rasTexto[i]);}System.out.println(ras);System.out.println(rasTexto);QueryqueryEmail=sessionEmail.createQuery(" from AlunoMicrosiga alunoMicrosiga "+" "+" where alunoMicrosiga.ra in ( :ras ) "+" ");queryEmail.setParameter("ras",ras);List<AlunoMicrosiga>alunoMicrosiga=queryEmail.list();
M
maugloju
Para quem possa interessar, resolvi o problema de outra maneira, segue o código abaixo:
Stringras=request.getParameter("ras");StringTokenizerst=newStringTokenizer(ras,"-");while(st.hasMoreTokens()){QueryqueryEmail=sessionEmail.createQuery(" from Aluno aluno "+" "+" where aluno.ra in ( :ras ) "+" ");queryEmail.setParameter("ras",st.nextToken());List<Aluno>aluno=queryEmail.list();//Aqui vai o código para enviar o e-mail de mala direta }