2009-10-28 3 views
7

Может ли кто-нибудь указать мне на пример использования CURRENT_DATE в запросе JPA?Пример использования CURRENT_DATE в запросе JPA

CURRENT_DATE указан в JPA, но я не смог заставить его работать. Я всегда получаю исключение unexpected token [CURRENT_DATE]. Поскольку это указано в JPA, все провайдеры должны соблюдать это право?

Я использую EclipseLink 2.0 BTW.

ответ

12

Он может быть использован как так:

Query query = manager 
    .createQuery("SELECT c FROM CITIES c WHERE c.founded = CURRENT_DATE"); 
for (Object city : query.getResultList()) { 
    System.out.println(city); 
} 

... где основана является временным типом:

@Column(name = "FOUNDED") 
    @Temporal(TemporalType.DATE) 
    private Date founded = new Date(); 

Не отличный пример, но вы получите идею. Я использую Eclipselink 1.1.2

+0

Ты действительно рядом. Я добрался так далеко перед тем, как увидеть ваш ответ. Я пытаюсь сделать что-то вроде Выберите x из таблицы x, где x.id = 1 и (x.lastModified-CURRENT_DATE)> = 365 Мне нужно использовать расчет по датам. – javydreamercsw

+0

Можно ли использовать арифметику datetime с использованием JPA? Вы должны иметь некоторую функцию, чтобы превратить разницу в дни (а не минуты или месяцы или тысячелетия и т. Д.). Я не знаю таких функций. Сделайте арифметику даты в Java, а затем просто выберите сравнение с результирующим диапазоном. – McDowell

+0

Я предполагаю, что это недостаток или недостающая функциональность JPA. Я должен сделать это так, я думаю. Благодаря! – javydreamercsw

3

При использовании Expression Framework существует метод Expression currentDateDate() на объекте(org.eclipse.persistence.expressions.Expression).

+0

Мне нужно попробовать, но я действительно старался избегать использования общих запросов JPA, чтобы избежать зависимости от поставщика непрерывности. – javydreamercsw

4

Ответ на этот вопрос заключался в том, чтобы получить значения через JPA, а затем выполнить математику в простой Java.

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