Estou desenvolvendo meu TCC e tenho uma consulta com JPQL que passa um parâmetro do tipo data. Pelo que eu vi o JPQL está certo, o problema ta na formatação da Data que vai passar como parâmetro pois quando debuguei em vez dele passar a data como "dd/MM/yyyy" ele passa "Wed Nov 14 00:00:00 BRST 2012" assim a consulta não ta funcionando, estou usando um simpledateformat para fazer a formatação mas não ta funcionando como eu quero, no banco a data ta como eu quero dia/mes/ano, vo cola os códigos que eu já fiz e se alguem souber outro forma pra formata e puder me ajudar…
passagem do parâmetro e formatação da data
getEntityManager().createNamedQuery("Reserva.FindMesaLivre")
.setParameter(1, new SimpleDateFormat("dd/MM/yyyy").format(reserva.getData()))
.getResultList();
JPQL:
select distinct r.mesa from Reserva r where r.data <> ?
Camarada, está fazendo o TCC e não sabe que não é assim que funciona?
O que você viu foi o resultado do método toString da classe Date.
Se o atributo data da classe Reserva for do tipo java.util.Date, você deve passá-lo como Date e não como String. Logo, o modelo anterior estava correto.
Sim, estou fazendo sim, mas é que comecei a ver java esse ano, e jsf apenas esse semestre e fiz meu tcc nele já, por isso estou com dificuldades, mas beleza,
sim entendi não me liguei no toString, pode cre é o retorno dele, sim é o data é do tipo util.date, testando um pouco e quando eu transformo para String com o format ele fica do jeito que eu quero
String data = frmt.format(reserva.getData());
mas não estou conseguindo transformar para Date de novo e assim colocar no parametro do jeito que eu necessito, como poderia fazer isso? tentei com o parse mas mesmo assim ele pega do toString,
A primeira coisa que eu fiz foi passar o objeto tipo Date direto como parâmetro, mas ele pega o toString do objeto e volta dados que eu não quero, o formato que quero é dd/MM/yyyy, por isso não estou conseguindo, que ele volta todos os dados e não é assim que está no banco, é esse formato que ta no banco.
o JPQL postei anteriormente já mas ai vai ele:
select distinct r.mesa from Reserva r where r.data <> ?
Camarada, qual a parte do “não converta nada” você não entendeu?
Postar essa JPQL não adianta, precisamos saber de que forma você criou o atributo e como está a coluna no banco de dados.
Desculpa não estou querendo ser grosso mas irei apenas responder,
postei a JPQL pois o Tchello pediu, no post depois do seu respondi que o atributo esta util.date, no primeiro coloquei que no banco está como date e formatado como dd/MM/yyyy,
falei que quando tentei colocar sem formatar nada não estava funcionando por causa do toString que retornava todos os valores que não queria, em vez de apenas o campo que eu preciso, achei um post seu que converte para o formato em sql, era quase isso que eu quero mas preciso no formato citado antes, se você souber como colocar nesse formato agradeceria .
tentei assim
SimpleDateFormat frmt = new SimpleDateFormat("dd/MM/yyyy");
Date data = frmt.parse(reserva.getData().toString());
creio que vão falar do toString, mas foi o jeito que achei pois o parse apenas aceita String
mas retornou esse erro:
o que eu preciso é mudar isso Thu Nov 15 00:00:00 BRST 2012 para isso 15/11/2012
desculpe a minha ignorância e se estou fazendo perguntas que parecem estúpidas, estou apenas tentando aprender, ao mesmo tempo que estou perguntando aqui procuro no google e não estou achando uma explicação mais objetiva, se puderem me ajudar agradeço, se acharem que estou pedindo coisas idiotas me informem também ou apenas ignorem,
edit:
irei postar aqui os dados do meu atributo
este é o atributo data da classe reserva
@Column(name="DATA_RESERVA")
@Temporal(TemporalType.DATE)
private Date data;
cara, seguinte… vc ta trabalhando com o Hibernte,ele utiliza um modelo “ORM”… oq é isso? BASICAMENTE é um modelo q usa objetos ao inves de tabelas, ou seja, vc não vai formatar a data pra inserir na JPQL, vc vai passar a data pro hibernate e ele se vira. pra gente poder te ajudar melhor coloca o corpo do metodo de busca pra gente dar uma olhada… acredito que o problema seja a sua consulta msm, mas vamos ver.
Ah, coloca a namedQuery q ta na classe reserva, ou toda a classe reserva.
Sim bem isso, eu quero pegar as mesas que não possuem nenhum registro com a data indicada pelo usuário. Assim se o usuário selecionar o dia 15/11/2012 apenas aparecerão as mesas que não possuem registro nesse dia.