如何在 JPQL 查询中从 LocalDate 获取月份?
Posted
技术标签:
【中文标题】如何在 JPQL 查询中从 LocalDate 获取月份?【英文标题】:How do I get a Month from LocalDate in JPQL query? 【发布时间】:2018-08-12 10:26:25 【问题描述】:我收到了一个带有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 查询中的月份,而不是之后映射它们。有没有可能这样做?
【问题讨论】:
@Saveen 谢谢!在提交之前,我应该更清楚地阅读我的问题。 :// 您可以在问题中添加日期格式(保存在数据库中)吗? 【参考方案1】:日期格式:yyyy-MM-dd HH:mm:ss
查询:SELECT t FROM Transaction t GROUP BY (SUBSTRING(t.created, 6, 7))
通过调用此NamedQuery
,您将获得不同的月份。
【讨论】:
我将通过您的查询获得整个交易,而不是 LocalDate 的月份。以上是关于如何在 JPQL 查询中从 LocalDate 获取月份?的主要内容,如果未能解决你的问题,请参考以下文章