私はSlick 3.1.0-M2を使用しています。私のテーブルでjava.time.LocalDateとjava.time.LocalTimeを使用したいと思います。私はこのようにそれを行う:Slickでjava.time.LocalDateのカスタム列マッピングを作成する
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
)
}
は、だから私は3つの暗黙的なマッピングを持っていますが、最初のものだけがコンパイルされます。私は最初のマッピングはファイルJdbcTypesComponent.scalaでTimestampJdbcTypeを見つけることがわかりますIntelliJので暗黙のパラメータ検査を行うと
could not find implicit value for evidence parameter of type slick.driver.PostgresDriver.BaseColumnType[java.sql.Date]
:java.sql.Dateとをjava.sql.Time持つものがでコンパイルを失敗します。そのすぐ隣に、TimeJdbcTypeとDateJdbcTypeがあります。だから、最初のものはどうして見つかるのですか?他のものはどうですか?
ああ、私はこれまでにこのエラーを見つけたとは思わないので、BIGに感謝します! :) –