我有實體活動與以下字段:比較日期的量和JPA與日期詮釋規格
@Temporal(TemporalType.TIMESTAMP)
@JsonFormat(pattern = DATE_FORMAT)
private Date start;
@Column(name = "period_minutes")
private Integer period;
我需要這些領域的量與當前的日期時間比較:
SELECT * FROM Event e WHERE (e.start + e.period) < NOW();
換句話說,我需要添加到start
字段(這是日期)period
(例如15)的一些分鐘數並將其與當前日期時間進行比較。我試圖這樣做:
return (root, query, cb) -> {
Expression<Long> sum = cb.sum(root.<Date>get("start"), root.get("period"));
return cb.lessThan(sum, new Date());
};
但是,這不會編譯。我不知道如何將日期轉換爲長時間並添加period * 60 * 1000
(分鐘 - >毫秒)。如何解決這個問題?
SOLUTION
我有固定與@幫助這個問題Серг0
cb.lessThan(
cb.sum(
cb.function("unix_timestamp", Long.class, root.get("start")),
cb.prod(root.get("period"), 1L)
),
cb.function("unix_timestamp", Long.class, cb.function("now", Long.class))
);
但我不明白爲什麼,如果我用1L
它的作品,如果我用60L*1000L
(因爲我需要計算幾分鐘內的毫秒數period
),它不起作用。
看到http://www.objectdb.com/database/forum/442過去後,我認爲這就是你想要的 – 2017-09-04 16:48:15