2014-05-12 140 views
0

我正在開發一個項目,其中包含一系列請求。我需要根據創建日期顯示請求。不過,我也需要先顯示那些到期日期到期的。這裏是POJO類:按訂單創建日期和截止日期的SQL訂單

@Entity 
@XmlRootElement 
@NamedQueries({ 
    @NamedQuery(name="Question.findAll", query="SELECT a FROM Request a ORDER BY a.created DESC"), 
}) 
public class Request { 

    Date created; 
    Date duedate; 
    String name; 

    public Request() {} 

    public static boolean isOverdue(){ 
     if duedate.before(new Date())) return true; else return false; 
    } 

    // omitting getter setters 
} 

我怎麼能寫JPQL聲明,以獲得創建日期進行排序的要求列表,但顯示出第一是那些有自己的到期日期過期?

回答

1

我不知道JPQL但我相信你可以執行普通的SQL如:

SELECT a FROM Request a ORDER BY coalesce(a.duedate, a.created) DESC

SELECT a FROM Request a ORDER BY coalesce(case when a.duedate < now() then duedate end, a.created) DESC

+0

謝謝,它的工作原理。 JPQL還有COALESCE和CASE功能。 – Emin