JPA - 每月第一天只有 select 个对象

JPA - Only select object for first day of month

我正在收集这样的日常数据集:

date        value
01.01.2017  5
02.01.2017  6
03.01.2017  10
.
.
.
01.02.2017  30
02.02.2017  33
.
.
.
01.03.2017  50

所以每天一篇。然后我用它来绘制一些图表。现在,如果数据太多,我想改为绘制月度图表,因此只有 select 这个月的第一个对象。例如。结果应该是:

date        value
01.01.2017  5
01.02.2017  30
01.03.2017  50

有没有办法用 JPQL 得到这个结果?结果应包含实体对象。

假设(可能是一个很大的假设?,但是你需要让问题更清楚才能得到准确的答复)你有一个这样的实体

@Entity
public class Dataset
{
    @Id
    long id;

    Date date;

    long value;
}

然后就可以执行JPQL如

Query q = em.createQuery("SELECT d FROM Dataset d WHERE DAY(d.date) == 1");

虽然 DAY 不是标准的 JPQL(目前),但大多数 JPA 提供商都支持它。