Pessoal,
sou iniciante com hibernate e estou com uma consulta para fazer espero que me ajudem. Seguinte, preciso pegar um dado no banco comparando uma data que é passada por parâmetro, como faço para comparar essa data com a que está armazenada no banco usando o hibernate?
depende… é data ? ou data e hora ?
vc deve usar beetwen, para definer que a data é entre 2 datas… ou seja é assim
public List findByData(Data data) {
DetachedCriteria dc = DetachedCriteria.forClass(Venda.class)
.add(Restrictions.between("dataDeVenda", DateUtils.lowDateTime(data), DateUtils.highDateTime(data)));
return dc
.getExecutableCriteria(getSession) //injetando a sessão do hibernate
.list();
}
pode reduzir o código acima, fazendo assim
[code]import static br.meupacote.DataUtils.lowDateTime;
import static br.meupacote.DataUtils.highDateTime;
import static org.hibernate.criterion.Restrictions.*; //<<== muito cuidado com isso, vai aparecer um monte de método nessa sua classe ^^
//… nome da classe e restante do código
public List findByData(Data data) {
DetachedCriteria dc = DetachedCriteria.forClass(Venda.class)
.add(between("dataDeVenda", lowDateTime(data), highDateTime(data)));
return dc
.getExecutableCriteria(getSession) //injetando a sessão do hibernate
.list();
}
//… restante
}[/code]
[code]
public class DateUtils {
/**
* Não é possivel instanciar DateUtils.
* @deprecated Classe utilitária estatica.
/
private @Deprecated DateUtils(){}
/*
* Retorna o valor do horário minimo para a data de referencia passada.
*
*
Por exemplo se a data for “30/01/2009 as 17h:33m:12s e 299ms” a data
* retornada por este metodo será “30/01/2009 as 00h:00m:00s e 000ms”.
* @param date de referencia.
* @return {@link Date} que representa o horário minimo para dia informado.
*/
public static Date lowDateTime(Date date) {
Calendar aux = Calendar.getInstance();
aux.setTime(date);
toOnlyDate(aux); //zera os parametros de hour,min,sec,milisec
return aux.getTime();
}
/**
* Retorna o valor do horário maximo para a data de referencia passada.
* <BR>
* <BR> Por exemplo se a data for "30/01/2009 as 17h:33m:12s e 299ms" a data
* retornada por este metodo será "30/01/2009 as 23h:59m:59s e 999ms".
* @param date de referencia.
* @return {@link Date} que representa o horário maximo para dia informado.
*/
public static Date highDateTime(Date date) {
Calendar aux = Calendar.getInstance();
aux.setTime(date);
toOnlyDate(aux); //zera os parametros de hour,min,sec,milisec
aux.add(Calendar.DATE, 1); //vai para o dia seguinte
aux.add(Calendar.MILLISECOND, -1); //reduz 1 milisegundo
return aux.getTime();
}[/code]
Pessoal,
seguinte fiz pelo hql…List info = session.createQuery(“from Info i where i.data=” + data).list();
só tem um problema: o valor de “data” está vindo null. Esse valor esse método recebe por parâmetro “public boolean consultarData(String data)”.
Bom…acho que o problema está no momento em que a data a ser consultada esta sendo inserida.
n sei se fiz certo, qq coisa me corrijam…
<s:div>
<s:form action=“consulta!lista”>
<s:textfield name=“data” value=“dd/mm/aaaa”></s:textfield>
<s:submit value=“Buscar”></s:submit>
</s:form>
</s:div>
essa é parte do código de uma jsp, é ai que o usuário insere a data a ser consultada.
se alguem poder me ajudar agradeço.
Pessoal,
consegui fazer a busca. Queria agora uma ajuda de vocês de como faço para apresentar na tela. Bom, peguei um css de um tutorial e montei uma jsp. Dai fiz:
<%@ taglib prefix=“s” uri="/struts-tags"%>
Contatos Registrados |
viveiro |
camara |
comercio |
preço |
Data |
Horário |
Produção |
|
|
|
|
|
|
|
essa tela ta blz…soh que depois que consegui carregar os dados do banco não consigo fazer com que essa jsp carregue as informações que peguei do banco.
Espero que me ajudem.