Slick 1.0.0 で Scala 2.10 を使用しており、持ち上げられたクエリを実行しようとしています。
ロードを実行しようとしているテーブル「Logins」と、Timestamp 列の groupBy があります。ただし、groupBy を試行すると、Timestamp フィールドをフォーマットして日の部分のみを抽出し、同じ日でオブジェクトをグループ化しようとすると、問題が発生します。
オブジェクトが与えられた場合:
id | requestTimestamp
1 | Jan 1, 2013 01:02:003
2 | Jan 1, 2013 03:04:005
3 | Jan 1, 2013 05:06:007
4 | Jan 2, 2013 01:01:001
同様の日付でデータベースからグループ化を返したいと思います。ここで、簡潔にするために、次のフォーマットされたタイムスタンプと ID の関係が発生します。ID は実際にはオブジェクトのリストになります
Jan 1, 2013 -> (1, 2, 3)
Jan 2, 2013 (4)
次の滑らかなテーブル オブジェクトがあります。
private implicit object Logins extends Table[(Int, Timestamp)]("LOGINS") {
def id = column[Int]("ID", O.PrimaryKey)
def requestTimeStamp = column[Timestamp]("REQUESTTIMESTAMP", O.NotNull)
def * = logId ~ requestTimeStamp
}
次のクエリ メソッド:
val q = for {
l <- Logins if (l.id >= 1 && l.id <= 4)
} yield l
val dayGroupBy = new java.text.SimpleDateFormat("MM/dd/yyyy")
val q1 = q.groupBy(l => dayGroupBy.format(l.requestTimeStamp))
db.withSession {
q1.list
}
ただし、予想されるグループ化を取得する代わりに、groupBy を試行した行で例外が発生します。
java.lang.IllegalArgumentException: Cannot format given Object as a Date
データベースからタイムスタンプで適切にグループ化することについて、誰か提案はありますか?