Between + datas (JPA)

10 respostas
P

estou tentado usar between em uma query só que não consegui fazer funcionar

Query query = em.createQuery("select login from com.teste.Usuario where dataCadastro between ? and ?");
query.setParameter(1, /*METODO QUE CONVERTE EM DATA*/Tools.strToDate("10/10/2005"));
query.setParameter(2, /*METODO QUE CONVERTE EM DATA*/Tools.strToDate("10/12/2007"));
List list = query.getResultList();

não dá erro, só que me retorna todos os usuários.

Se alguém puder me ajudar agradeço…

10 Respostas

P

Ninguém???

R

olá,

vc já olhou a query que ele gerou e a executou no banco?
Esse campo na tabela é apenas data, ou tem hora tbm?

[]´s

P

data e hora

B

Pablo,poste tbm este método Tools.strToDate…Você pode tentar tbm no final da sua data colocar o metodo .getTime()…Sua query esta blz,
pode ser algum problema com a passagem de parametros mesmo…
flw []'s

P

Tá aí o código

private static Date strToDate(String data) 
		throws Exception {

		Date _data =null;
		if (data==null || data.length()==0) {
			return null;
		}
		        
		SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
        
		try {
			format.setLenient(false);
			_data = format.parse(data);
		} catch  (Exception pe) {
			throw new Exception("Data Invalida!");
		}
        
		return _data;
	}
G

Não sei se é pratico ou aconselhavel, mas passe a data atraves de String mesmo, no formato que seu banco usa!

R

cara,

Pegue a query que ele gera e veja no que dá.

[]´s

P

mais aí fico dependente do banco…

R

Olá,

Você não entendeu o que eu quis dizer. Pegue a query que ele gera, rode no banco e veja o que tem de errado com a query.

[]´s

B

O Rodrigo esta falando para você tentar copiar a sua query e tentar executar dentro do proprio banco,para ver se o erro não esta nela mas é claro que vc deve fazer algumas modificações de acordo com o banco que voce esta utilizando(mysql,sqlserver)…
tenta algo assim:

flw []'s

Criado 15 de dezembro de 2007
Ultima resposta 17 de dez. de 2007
Respostas 10
Participantes 4