Slick class 定义:声明日期隐含值时出错
Slick class definition: error declaring date implicit value
我有一个只有一列(日期)的 table。这就是我尝试在 Slick 3.x:
中建模的方式
数据库class:
import slick.driver.MySQLDriver.api._
import java.sql.Date
import java.time.LocalDate
class ReportDateDB(tag: Tag) extends Table[ReportDateVO](tag, "report_dates") {
def reportDate = column[LocalDate]("report_date")
def * = (reportDate) <> (ReportDateVO.apply, ReportDateVO.unapply)
implicit val localDateColumnType = MappedColumnType.base[LocalDate, Date](
d => Date.valueOf(d),
d => d.toLocalDate
)
}
值对象大小写class:
import java.time.LocalDate
case class ReportDateVO(reportDate: LocalDate)
问题是我在数据库 class 中遇到以下错误(当我声明字段 reportDate
时):
- could not find implicit value for parameter tt:
slick.ast.TypedType[java.time.LocalDate]
- not enough arguments for
method column: (implicit tt:
slick.ast.TypedType[java.time.LocalDate])slick.lifted.Rep[java.time.LocalDate].
Unspecified value parameter tt.
这是什么错误以及如何解决?隐式转换 from/to LocalDate/sql.Date 已定义。
您应该可以通过明确提供值来解决此问题:
def reportDate = column[LocalDate]("report_date")(localDateColumnType)
为了保持隐式而不是明确引用 localDateColumnType
只需将其定义放在列定义之前。
我有一个只有一列(日期)的 table。这就是我尝试在 Slick 3.x:
中建模的方式数据库class:
import slick.driver.MySQLDriver.api._
import java.sql.Date
import java.time.LocalDate
class ReportDateDB(tag: Tag) extends Table[ReportDateVO](tag, "report_dates") {
def reportDate = column[LocalDate]("report_date")
def * = (reportDate) <> (ReportDateVO.apply, ReportDateVO.unapply)
implicit val localDateColumnType = MappedColumnType.base[LocalDate, Date](
d => Date.valueOf(d),
d => d.toLocalDate
)
}
值对象大小写class:
import java.time.LocalDate
case class ReportDateVO(reportDate: LocalDate)
问题是我在数据库 class 中遇到以下错误(当我声明字段 reportDate
时):
- could not find implicit value for parameter tt: slick.ast.TypedType[java.time.LocalDate]
- not enough arguments for method column: (implicit tt: slick.ast.TypedType[java.time.LocalDate])slick.lifted.Rep[java.time.LocalDate]. Unspecified value parameter tt.
这是什么错误以及如何解决?隐式转换 from/to LocalDate/sql.Date 已定义。
您应该可以通过明确提供值来解决此问题:
def reportDate = column[LocalDate]("report_date")(localDateColumnType)
为了保持隐式而不是明确引用 localDateColumnType
只需将其定义放在列定义之前。