Używam Slick 3.1.0-M2 i chcę używać java.time.LocalDate i java.time.LocalTime w moich tabelach. Robię to tak:Utwórz niestandardowe mapowanie kolumn dla java.time.LocalDate ze Slickem
import java.sql.{Date, Time, Timestamp}
import java.time.{LocalDate, LocalTime, LocalDateTime, ZoneOffset}
trait DateTimeColumns {
import slick.driver.PostgresDriver.api._
implicit val localDateTimeColumnType = MappedColumnType.base[LocalDateTime, Timestamp](
d => Timestamp.from(d.toInstant(ZoneOffset.ofHours(0))),
d => d.toLocalDateTime
)
implicit val dateColumnType = MappedColumnType.base[LocalDate, Date](
d => Date.valueOf(d),
d => d.toLocalDate
)
implicit val timeColumnType = MappedColumnType.base[LocalTime, Time](
localTime => Time.valueOf(localTime),
time => time.toLocalTime
)
}
Mam 3 niejawne mapowania, ale tylko pierwsza kompiluje. Te z java.sql.Date i java.sql.Time nie kompilację z:
could not find implicit value for evidence parameter of type slick.driver.PostgresDriver.BaseColumnType[java.sql.Date]
Kiedy zrobić niejawny kontrolę parametrów w IntelliJ widzę, że pierwszy mapowanie znajdzie TimestampJdbcType w pliku JdbcTypesComponent.scala . Zaraz obok widzę TimeJdbcType i DateJdbcType. Jak to się stało, że pierwszy został znaleziony, ale inni nie?
Ahh, nie sądzę, żebym kiedykolwiek znalazł ten błąd, więc WIELKIE, dziękuję! :) –