我正在开发一个项目,我们有一组请求。我需要在创建日期之前显示请求。但是,我还需要首先显示截止日期已到期的那些。这是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语句以获取按创建日期排序的请求列表,但首先显示那些到期日期已过期的请求?
答案 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