在 Slick 3 中按日期对 table 进行排序。1.x
Sorting a table by date in Slick 3.1.x
我有以下包含日期的 Slick class:
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
)
}
当我尝试按日期对 table 进行排序时:
val query = TableQuery[ReportDateDB]
val action = query.sortBy(_.reportDate).result
我得到以下编译错误
not enough arguments for method sortBy: (implicit evidence: slick.lifted.Rep[java.time.LocalDate] ⇒
slick.lifted.Ordered)slick.lifted.Query[fdic.ReportDateDB,fdic.ReportDateDB#TableElementType,Seq].
Unspecified value parameter evidence.
No implicit view available from slick.lifted.Rep[java.time.LocalDate] ⇒ slick.lifted.Ordered.
如何指定隐式默认顺序?
它应该像描述的那样工作here:
implicit def localDateOrdering: Ordering[LocalDate] = Ordering.fromLessThan(_ isBefore _)
您需要让您的 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
我不确定把它放在哪里最好,但我通常将所有这些转换放在一个包对象中。
尝试将此行添加到您的导入列表中:
导入slick.driver.MySQLDriver.api._
我有以下包含日期的 Slick class:
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
)
}
当我尝试按日期对 table 进行排序时:
val query = TableQuery[ReportDateDB]
val action = query.sortBy(_.reportDate).result
我得到以下编译错误
not enough arguments for method sortBy: (implicit evidence: slick.lifted.Rep[java.time.LocalDate] ⇒ slick.lifted.Ordered)slick.lifted.Query[fdic.ReportDateDB,fdic.ReportDateDB#TableElementType,Seq]. Unspecified value parameter evidence.
No implicit view available from slick.lifted.Rep[java.time.LocalDate] ⇒ slick.lifted.Ordered.
如何指定隐式默认顺序?
它应该像描述的那样工作here:
implicit def localDateOrdering: Ordering[LocalDate] = Ordering.fromLessThan(_ isBefore _)
您需要让您的 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
我不确定把它放在哪里最好,但我通常将所有这些转换放在一个包对象中。
尝试将此行添加到您的导入列表中:
导入slick.driver.MySQLDriver.api._