[英]How do I group by date with QueryDsl?
我有一個實體,需要獲取與時間無關的日期列表。 如何按日期分組?
@Entity
public class RssFeedEntry {
//...
@Column
@Temporal(TemporalType.TIMESTAMP)
private Date publishedDate;
//...
}
這樣的查詢將引發異常。
JPAQuery query = new JPAQuery(entityManager);
List<Tuple> list = query.
from(feedEntry).
groupBy(feedEntry.publishedDate.dayOfYear(), feedEntry.publishedDate.year()).
list(feedEntry.publishedDate.dayOfMonth(),
feedEntry.publishedDate.month(),
feedEntry.publishedDate.year());
堆棧跟蹤:
Caused by: org.h2.jdbc.JdbcSQLException: Column "RSSFEEDENT0_.PUBLISHEDDATE" must be in the GROUP BY list; SQL statement:
謝謝。
據我所知,這是數據庫限制。 除非僅在聚合函數(即max(),sum()等)中使用,否則select子句中的所有列都必須在group by子句中。 如果使用的不是MySQL,則不會出現這種問題。 據我所知,MySQL是唯一的數據庫,在這個問題上,它不會使您退縮。
嘗試這個:
List<Tuple> list = query.
from(feedEntry).
groupBy(feedEntry.publishedDate.dayOfMonth(),
feedEntry.publishedDate.month(),
feedEntry.publishedDate.year()).
list(feedEntry.publishedDate.dayOfMonth(),
feedEntry.publishedDate.month(),
feedEntry.publishedDate.year());
編輯:
不過,這將更加清晰:
List<Tuple> list = query.
from(feedEntry).
groupBy(feedEntry.publishedDate).
list(feedEntry.publishedDate);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.