Galera estou com a seguinte dúvida: tenho um objeto com um atributo tipo Date (e naturalmente uma tabela correspondente no bd com uma coluna do mesmo tipo).
Minha pergunta é como fazer um select do tipo: quero os objetos cujas datas tem o mês de novembro, de um ano e dia quaisquer; ou ainda, quero os objetos dos dias 5 ao 10 de um mês e ano quaisquer, etc…
estou usando jdbc puro. vc poderia exemplificar como ficaria a query jpql?
obrigado
F
fabiocsilva
pode ser algo como:
selectufromUseruwheremonth(u.dateOfBirth)=10
Não me lembro se o mês começa em 0 ou 1, testa aí.
R
Rafael_Nascimento
fabiosilva, são exatamente essas funções que estava procurando. Testei aqui, mas ta sempre retornando uma list vazia
Queryq=em.createQuery("SELECT p FROM Produto p WHERE month(p.date) >= 0 ");//tem que trazer todosList<Produto>ls=q.getResultList();System.out.println(ls.size());//output: 0
F
fabiocsilva
Rafael Nascimento:
fabiosilva, são exatamente essas funções que estava procurando. Testei aqui, mas ta sempre retornando uma list vazia
Queryq=em.createQuery("SELECT p FROM Produto p WHERE month(p.date) >= 0 ");//tem que trazer todosList<Produto>ls=q.getResultList();System.out.println(ls.size());//output: 0
Tem razão. Fui dar uma olhada na especificação e a função month() ainda não foi implementada no jpql, apenas no hql do Hibernate. Algo que você pode tentar é criar um atributo transiente na classe Produto que retorna o mês do mesmo, e então usar esse atributo no jpql…
R
Rafael_Nascimento
ok, valeu!
T
thejoker
Qual ORM vc está usando se for o Hibernate vc pode fazer usando criteria, ou no HQL mesmo, se tiver no JDBC puro vc pode fazer usando a classe date mesmo, ela tem os metodos getDay getMonth e etc.