Formatação de Data para consulta com JPQL

Bom dia

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 <> ?

O meu calendário:

<p:calendar id="data" value="#{reservaMB.reserva.data}" pattern="dd/MM/yyyy"/>

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,

Não tem que formatar nada.
Passe o objeto do tipo Date direto como parâmetro.
Pare de pensar “orientado a strings”.

Poste a JPQL que você está executando para vermos.

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:

Caused by: java.text.ParseException: Unparseable date: "Thu Nov 15 00:00:00 BRST 2012"

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.

beleza, sim um pouco eu entendo sim, mas vamos lá entã obrigado pelo esclarecimento,

meu método de busca

public List<Mesas> getListMesasLivre() throws ParseException{
        
        if(reserva.getData() == null){
            return getEntityManager().createNamedQuery("Mesas.findAll").getResultList();
        }else{              
            return getEntityManager().createNamedQuery("Reserva.FindMesaLivre")
                                     .setParameter(1,reserva.getData())
                                     .getResultList();
        }
    }

minha classe reserva

@Entity
@Table(name="RESERVA")
@NamedQueries({
                @NamedQuery(name="Reserva.findAll", query="select r from Reserva r"),
                @NamedQuery(name="Reserva.findAllOrderData", query="select r from Reserva r"
                                                                + " order by data"),
                    @NamedQuery(name="Reserva.FindMesaLivre", query="select distinct r.mesa from Reserva r"
                                                                  + " where r.data <> ? ")
              })
public class Reserva implements Serializable {
    
    @Id
    @SequenceGenerator(name="GENERATOR_RESERVA", 
                         sequenceName="GENERATOR_RESERVA",initialValue=1,
                         allocationSize=1 )
    @GeneratedValue(strategy= GenerationType.AUTO,
                    generator="GENERATOR_RESERVA")
    @Column(name="ID",nullable=false)
    private int idReserva;
    
    @ManyToOne
    @JoinColumn(name="ID_CLIENTE",referencedColumnName="ID",nullable=false)
    private Cliente cliente;
    
    @ManyToOne
    @JoinColumn(name="ID_MESAS",referencedColumnName="CODIGO",nullable=false)
    private Mesas mesa;
    
    @Column(name="DATA_RESERVA")
    @Temporal(TemporalType.DATE)
    private Date data;
    
    @Column(name="STATUS_2",nullable=false)
    private int status;
    
    @Column(name="HORA_RESERVA")
    @Temporal(TemporalType.TIME)
    private Date hora;

   //getters e setters

cara, qual a inteção dessa query? vc quer trazer as mesas que estão foda da data selecionada?

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.