2016-08-17 3 views
0

Я пытаюсь выяснить, не установлена ​​ли дата в течение 10 месяцев. Если запись не следует игнорировать! Решение должно работать с HQL. Я уже пробовал несколько запросов:Hibernate Quier Compare Date (не более 10 месяцев)

Это один работает, но не то, что я хочу:

session.createQuery("FROM Application WHERE id="+id+" AND date < current_date()").getResultList(); 

Что является пустым здесь:

session.createQuery("FROM Application WHERE id="+id+" AND month(date) + (10-month(current_date()) < month(current_date())").getResultList(); 

"Интервал", неизвестно:

session.createQuery("FROM Application WHERE id="+id+" AND DATE_SUB(current_date(), INTERVAL 10 MONTH) < date").getResultList(); 

«месяцы» неизвестен:

session.createQuery("FROM Application WHERE id="+id+" AND current_date()-10 month < date+").getResultList(); 

У меня нет больше идей, как решить эту проблему. Надеюсь, кто-то может помочь мне здесь.

Спасибо!

+0

пожалуйста маркировать свой вопрос с БД вы используете – Apostolos

+0

я добавил тег. Я использую MySQL –

ответ

0

Почему бы вам не попробовать это ...

static SimpleDateFormat datetimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    Calendar date = Calendar.getInstance(); 
    date.add(Calendar.MONTH, -10); 
    Date date1=date.getTime(); 
    String newdate=datetimeFormat.format(date1); 

    Query query=session.createQuery("FROM Application a WHERE a.id="+id+" AND a.date <" + "'"+newdate+"'"); 

    System.out.println(query.list().size()); 
+0

Спасибо за ваш код. Но ваш код дает мне эту ошибку: HTTP Status 500 - org.hibernate.QueryException: неожиданный char: '"' [FROM com.XXX.XXX.application.Application a WHERE a.id = 7 AND a.date –

+0

проверить свою сущность class, независимо от того, являются ли они такими же, как я упоминал, например: id и date. Проверьте, нужно ли вам форматировать дату ('yyyy-MM-dd'). Вышеуказанный код определенно работает – Gokul

+0

Я проверил их снова, и они правы. похоже, что есть проблема с «Календарем» ... –