如何在JPQL查询中从LocalDate获取月份?

时间:2018-08-12 10:26:26

标签: java-8 jpa-2.1

我有一个LocalDate属性为created的交易:

private LocalDate created;

我还收到以下查询,以从表transaction中检索每个日期。

SELECT DISTINCT t.created FROM Transaction t

但这只是给了我所有日期,我正在将这些日期映射到找到的所有月份。

public List<Month> findAllUsesdMonth() {
  return getEm().createNamedQuery(Transaction.FIND_ALL_MONTH, LocalDate.class).getResultList().stream().map(LocalDate::getMonth)
        .collect(Collectors.toList());
}

这显然导致重复的月份,因为我选择了不同的日期而不是不同的月份。一种解决方法是使用Set而不是List。

我只想检索JPQL查询中的月份,而不是之后映射它们。有可能这样做吗?

1 个答案:

答案 0 :(得分:0)

日期格式:yyyy-MM-dd HH:mm:ss

查询:SELECT t FROM Transaction t GROUP BY (SUBSTRING(t.created, 6, 7))

通过将此称为NamedQuery,您将获得不同的月份。