Определение класса Slick: ошибка при объявлении неявного значения даты

У меня есть таблица только с одним столбцом (дата). Вот как я пытаюсь смоделировать это в Slick 3.x:

Класс БД:

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
  )

}

Класс случая объекта значения:

import java.time.LocalDate

case class ReportDateVO(reportDate: LocalDate)

Проблема в том, что я получаю следующую ошибку в классе БД (когда я объявляю поле reportDate):

  • не удалось найти неявное значение для параметра tt: slick.ast.TypedType[java.time.LocalDate]
  • недостаточно аргументов для столбца метода: (неявный tt: slick.ast.TypedType[java.time.LocalDate])slick.lifted.Rep[java.time.LocalDate]. Параметр неопределенного значения tt.

Что это за ошибка и как ее исправить? Определено неявное преобразование из/в LocalDate/sql.Date.


person ps0604    schedule 06.05.2016    source источник


Ответы (2)


Вы должны быть в состоянии решить эту проблему, явно указав значение:

def reportDate = column[LocalDate]("report_date")(localDateColumnType)
person jkinkead    schedule 06.05.2016

Для того, чтобы все оставалось неявным и не ссылаться явно на localDateColumnType, просто поместите его определение перед определением столбца.

person ps_ttf    schedule 29.08.2017