2013-12-04 4 views
0

Привет, ребята им пытаются сделать запрос диапазона в JPA, где я могу искать в DOB между заданным диапазономДиапазона запросы в JPA

я получаю пользователь ввести сведения о каландре, а затем передать его в этот код

public List<User> dobRangeSearch(Date dateOfBirthSearch1, Date dateOfBirthSearch2) { 
    Query q = em.createQuery("SELECT u FROM USERS U WHERE u.DATEOFBIRTH BETWEEN "+ dateOfBirthSearch1 + " and " + dateOfBirthSearch2); 
    return q.getResultList(); 

} 

, но я получаю следующее сообщение об ошибке:

java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager: 
Exception Description: Syntax error parsing [SELECT u FROM USERS U WHERE u.DATEOFBIRTH BETWEEN Sun Dec 01 00:00:00 GMT 2013 and Wed Dec 04 00:00:00 GMT 2013]. 
[28, 95] The expression is not a valid conditional expression. 

, что это правильный путь, чтобы запустить этот поиск?

благодаря

EDIT

даже если я создал значение с использованием каландра и датой функции запись, которые получают положенную в базу данных в формате

'2013-12-02' 

так как я могу отделять данные от ввода до этого?

ответ

1

Вы помещаете вывод Date.toString() в свой запрос, чтобы либо использовать DateFormater, чтобы получить строку даты в правильном формате ваших параметров использования.

public List<User> dobRangeSearch(Date dateOfBirthSearch1, Date dateOfBirthSearch2) { 
    Query q = em.createQuery("SELECT u FROM USERS U WHERE u.DATEOFBIRTH BETWEEN :date1 and :date2) 
     .setParameter("date1", dateOfBirthSearch1) 
     .setParameter("date2", dateOfBirthSearch2; 
    return q.getResultList(); 

} 
+0

Я рекомендую также указать TemporalType. –

Смежные вопросы