Tôi có một bảng PostgreSQL với một enum
, được tạo ra bởi:Làm cách nào để tạo loại cột tùy chỉnh với Typesafe Slick trong Scala?
CREATE TYPE file_status AS ENUM ('new', 'uploading', 'queued', 'processing', 'done', 'failed');
và một lĩnh vực liên quan đến
ánh xạCREATE TABLE files (...
status file_status NOT NULL,
...
);
Với Scala 2.10 và typesafe Slick 1.0.1, tôi đã tạo ra để bảng Tệp của tôi hoạt động tốt với ngoại lệ trường status
, yêu cầu loại file_status
tùy chỉnh, một chuỗi.
def status = column[FileStatus]("status")
Tôi đã chơi với TypeMapper Slick, nhưng có thể không hoàn toàn tìm ra cách để có được nó để làm việc:
sealed trait FileStatus
implicit val fileStatusMapper: TypeMapper[String] = base[FileStatus, String](
s => s.toString,
f => f(FileStatus)
)
tôi nhận được lỗi: loại không phù hợp; được tìm thấy: models.Files.FileStatus.type bắt buộc: Int
Tại sao yêu cầu Int? Có phải vì TypeMapper không? Tôi cũng đã thử
...
f => f.toString
// type mismatch; found : String required: models.Files.FileStatus
f => f
// type mismatch; found : String required: models.Files.FileStatus
Cảm ơn bạn đã tìm mọi hướng dẫn giúp tôi hiểu bản đồ này.
Ahhh, cảm ơn bạn - tạo các đối tượng trường hợp là mảnh tôi đã bỏ qua, vì lý do gì. Cảm ơn @cvogt – jbnunn
Cập nhật: đã thêm một triển khai thay thế :) – cvogt