创建的SQL订单和截止日期已过期

时间:2014-05-12 10:59:12

标签: sql sql-order-by jpql

我正在开发一个项目,我们有一组请求。我需要在创建日期之前显示请求。但是,我还需要首先显示截止日期已到期的那些。这是POJO类:

 @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 个答案:

答案 0 :(得分: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