0
我有一個應用程序,允許用戶選擇某些關鍵字,然後應用程序監聽包含這些關鍵字的推文並將它們存儲在數據庫中。Ebean + ManyToMany加入
對於給定的用戶,他們有一個關鍵字列表。我想要做的是通過計算在給定的每天/每月發生的與該關鍵字相關的推文數量,獲取關於每個關鍵字在給定的日期,月份等中的效果的統計數據。
public class Person extends Model {
@id
long id;
@ManyToMany
List<Keywords> keywords = new ArrayList();
}
public class Keyword extends Model {
@Id
int id;
String keyword;
@ManyToMany
public List<Tweet> tweets = new ArrayList();
}
public class Tweet extends Model {
@Id
int id;
TimeStamp datetime;
}
我認爲這樣做會Tweet.find --where關鍵字=千瓦和日期> D--最好的方式,但我不知道如何做到這一點。我應該使用抓取嗎?以下是普通SQL中的一個類似查詢。
select datetime, count(*) from tweet t left outer join keyword_tweet on t.id=keyword_tweet.tweet_id group by cast(t.datetime as date) having t.datetime > '2014-02-02';
+---------------------+----------+
| datetime | count(*) |
+---------------------+----------+
| 2014-02-02 13:27:45 | 1 |
| 2014-02-08 05:14:04 | 2 |
| 2014-02-09 08:34:31 | 1 |
| 2014-02-12 12:42:02 | 1 |
| 2014-02-13 06:00:09 | 2 |
| 2014-02-14 00:47:04 | 2 |
| 2014-02-15 07:26:30 | 6 |
| 2014-02-16 01:00:00 | 21 |
| 2014-02-17 00:06:50 | 916 |
| 2014-02-18 18:08:56 | 1 |
| 2014-02-19 01:28:40 | 1 |
| 2014-02-24 16:45:11 | 1 |
| 2014-02-26 14:43:54 | 4 |
| 2014-02-27 08:24:09 | 9 |
| 2014-02-28 05:08:16 | 411 |
+---------------------+----------+
所以,從那裏鳴叫(鳴叫id爲用戶關鍵字列表)
選擇我也喜歡到GROUP BY:
cast(t.datetime as date)
,並具有
date > 2014-02-02 //example date
關於某些查詢。感謝任何幫助傢伙!
是的,是的,是的!這正是我期待的,很多很好的例子。謝謝您,先生,我一直對此感到沮喪太久。 –
很高興幫助。我花了最近兩週的時間試圖讓一些多對多的連接工作,許多令人沮喪的夜晚,但我發現這主要是由於我不瞭解ebean的工作原理以及缺少示例和文檔。它與JPA規範非常接近,但不完全相同,所以這些也不完全有幫助。 –