我有一个'Log
'实体,其中包含有关温度的信息。
我正在尝试构建一个仅包含两个字段的报告:
quantity : this field will tell how much my search should look
interval : minutes, hours, days, months, years (this field tells me how much is the interval of the search
这是我的Log
实体:
public class Log implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
private Timestamp time;
private String value;
// getters and setters ...
因此,当用户通知1 minute
时,我应该查找最后一分钟(或至少60条记录)。
或者,如果1个月,我应该获得上个月的所有数据。
我正在尝试这样的事情:
log.time < CURRENT_TIMESTAMP AND log.time > :param
但我如何指定分钟,小时?我的意思是如何在我的查询中更具体?
答案 0 :(得分:3)
如果时间单位是“天”:
Calendar now = Calendar.getInstance();
now.add(Calendar.DAY_OF_MONTH, -quantity);
Date param = now.getTime();
保持查询不变,并将param
绑定到:param
请求参数。
对于其他时间间隔,请执行相同操作,但使用相应的日历字段(HOUR_OF_DAY,MINUTE等)而不是Calendar.DAY_OF_MONTH。