2016-05-08 5 views
1

私は日付が含ま以下のスリッククラスがあります。私が手スリック3.1.xへの日付でテーブルをソートする

val query = TableQuery[ReportDateDB] 
    val action = query.sortBy(_.reportDate).result 

:私は日付によってテーブルをソートしようと

import java.sql.Date 
import java.time.LocalDate 

class ReportDateDB(tag: Tag) extends Table[ReportDateVO](tag, "report_dates") { 

    def reportDate = column[LocalDate]("report_date")(localDateColumnType) 

    def * = (reportDate) <> (ReportDateVO.apply, ReportDateVO.unapply) 

    implicit val localDateColumnType = MappedColumnType.base[LocalDate, Date](
    d => Date.valueOf(d), 
    d => d.toLocalDate 
) 

} 

を次のコンパイルエラー

  • ない方法SORTBYのための十分な引数:(implici証拠$ 2:slick.lifted.Rep [java.time.LocalDate]⇒ slick.lifted.Ordered)slick.lifted.Query [fdic.ReportDateDB、fdic.ReportDateDB#TableElementType、Seq]。 不特定の値パラメータ証拠$ 2。

  • slick.lifted.Rep [java.time.LocalDate]⇒slick.lifted.Orderedからの暗黙的なビューはありません。暗黙のデフォルトの順序を指定する方法を

+0

https://github.com/slick/slick/issues/627 – sap1ens

+0

を助けることができますこれがどう役立つか分かりません – ps0604

答えて

2

あなたは、クエリを実行どこimplicit val localDateColumnTypeを利用できるようにする必要があります。たとえば、これは動作します:

implicit val localDateColumnType = MappedColumnType.base[LocalDate, Date](
    d => Date.valueOf(d), 
    d => d.toLocalDate) 

val query = TableQuery[ReportDateDB] 
val action = query.sortBy(_.reportDate).result 

を私はこれを置くのに最適な場所がどこにあるかわからないんだけど、私は通常パッケージオブジェクト内のすべてのこれらの変換を置きます。

1

それは説明hereのように動作するはずです:

implicit def localDateOrdering: Ordering[LocalDate] = Ordering.fromLessThan(_ isBefore _) 
+0

orderByステートメントの直前に暗黙の宣言を追加しても、同じエラーが表示されます。何か案は? – ps0604

+0

私の答えは実際にはここには当てはまらないと思います。コンパニオンオブジェクトにlocalDateColumnTypeを配置し、それをクライアントクラスにインポートすることもできます。 – devkat

+0

localDateColumnTypeとは何ですか?私はそれをどのように使うべきですか?コードサンプルを投稿できますか? – ps0604

0

インポートリストに次の行を追加してみてください。

輸入slick.driver.MySQLDriver.api._