スリックテストからこの例を見つけました:
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
}
)
しかし、org.joda.time.DateTime と java.sql.Timestamp の間の TypeMapper を作成しようとしていますが、あまり成功していません。Bool の例は非常に特殊で、私はそれを適応させるのに苦労しています。Joda Time は非常に一般的です。
明確にするために、補間された sql"""select colA,colB from tableA where id = ${id}""" などを使用しています。選択を行うとき、暗黙的な GetResult コンバーターで jodaDate 型を使用することにより、システムはうまく機能します。
ただし、挿入の場合、暗黙的な変換を行う方法がないように思われるか、以下の回答 #1 で提供されるコードを無視しています - 前と同じエラー: パラメーター pconv の暗黙的な値が見つかりませんでした: scala.slick.jdbc .SetParameter[(Option[Int], String, String, Option[org.joda.time.DateTime])]
おそらく、注釈付きの Table オブジェクトで Lifted スタイルの Slick 構成を使用していないため、TypeMapper を見つけたり使用したりしていません