Я нашел этот пример из гладкого тестирования:
https://github.com/slick/slick/blob/master/slick-testkit/src/main/scala/com/typesafe/slick/testkit/tests/MapperTest.scala
sealed trait Bool
case object True extends Bool
case object False extends Bool
implicit val boolTypeMapper = MappedColumnType.base[Bool, String](
{ b =>
assertNotNull(b)
if(b == True) "y" else "n"
}, { i =>
assertNotNull(i)
if(i == "y") True else False
}
)
Но я пытаюсь создать TypeMapper для org.joda.time.DateTime в/из java.sql.Timestamp, но без особого успеха. Пример Bool очень специфичен, и у меня возникли проблемы с его адаптацией. Joda Time очень распространен, поэтому любая помощь будет высоко оценена.
Чтобы было ясно, я использую интерполированный sql"""выберите colA,colB из таблицыA, где id = ${id}""" и т.д. При выполнении выбора система работает хорошо, используя типы jodaDate в неявном преобразователе GetResult.
Однако для вставок, похоже, нет способа выполнить неявное преобразование, или он игнорирует код, представленный ниже в ответе № 1 - та же ошибка, что и раньше: не удалось найти неявное значение для параметра pconv: scala.slick.jdbc .SetParameter[(Option[Int], String, String, Option[org.joda.time.DateTime])]
Я не использую конфигурацию Slick в стиле Lifted с аннотированными объектами Table, возможно, поэтому он не находит/не использует TypeMapper