tôi đã tìm thấy ví dụ này từ thử nghiệm trơn:
https://github.com/slick/slick/blob/master/slick-testkit/src/main/scala/com/typesafe/slick/testkit/tests/MapperTest.scalakhách hàng Loại hình Mapper cho SQL Slick
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
}
)
Nhưng tôi đang cố gắng để tạo ra một TypeMapper cho org.joda.time.DateTime đến/từ java .sql.Timestamp - nhưng không có nhiều thành công. Ví dụ Bool rất cụ thể và tôi đang gặp khó khăn trong việc thích ứng với nó. Thời gian Joda là siêu phổ biến - vì vậy mọi trợ giúp sẽ được đánh giá cao.
Để rõ ràng, tôi đang sử dụng dấu "" xen kẽ, chọn colA, colB từ tableA trong đó id = $ {id} "" "và như vậy. Khi thực hiện chọn hệ thống hoạt động tốt bằng cách sử dụng các loại jodaDate trong trình chuyển đổi GetResult ngầm định.
Tuy nhiên, đối với chèn có vẻ không phải là cách để thực hiện chuyển đổi ngầm hoặc bỏ qua mã được cung cấp bên dưới trong Câu trả lời số 1 - lỗi tương tự như trước: không thể tìm thấy giá trị tiềm ẩn cho tham số pconv: scala.slick.jdbc.SetParameter [(Tùy chọn [Int], Chuỗi, Chuỗi, Tùy chọn [org.joda.time.DateTime])]
Tôi không sử dụng cấu hình Nâng kiểu Slick với các đối tượng Bảng được chú thích có lẽ đó là lý do tại sao nó không tìm/sử dụng TypeMapper
Cảm ơn bạn vì ví dụ đó, tôi đã sử dụng MappedTypeMapped và nó gây ra lỗi, nhưng ví dụ đó với định nghĩa loại rõ ràng cho chuyển đổi hoạt động như là sự quyến rũ. –