找不到匹配的形状。 Slick不知道如何映射给定的类型

时间:2016-03-07 00:44:32

标签: scala playframework slick

我的案例类

case class Entry(id: Int, title: String, content: String,
                                 publishedDate: Date, views: Int)

Schena

class Entries(tag: Tag) extends Table[Entry](tag, "ENTRIES") {
        def id = column[Int]("id", O.PrimaryKey, O.AutoInc)
        def title = column[String]("title")
        def content = column[String]("content")
        def publishedDate = column[Date]("published_date")
        def views = column[Int]("views")

        override def * = (id, title, content, publishedDate, views) <> (Entry.tupled, Entry.unapply)
    }

val entries = TableQuery[Entries]

我的查询:

def byId(id: Rep[Int]) = for (entry <- entries if entry.id === id) yield entry.first
val entryById = Compiled(byId _)
def get(id: Int): Option[Entry] = db.Schema.entryById(id).result.run(DB)

当我跑步时出现此错误:找不到匹配的形状。光滑不知道 如何映射给定的类型。

播放:2.4 斯卡拉:2.11.6 光滑:3.1.1

编辑:我还得到了#34;值首先不是db.Schema.Entries&#34;的成员。以及&#34;结果&#34;

的类似错误

2 个答案:

答案 0 :(得分:1)

方法firstfistOption将在光滑的3.0.0中删除。使用headheadOption

答案 1 :(得分:1)

您可能正在使用java.util.Date。我认为java.sql.Datejava.sql.Timestamp支持开箱即用,但不支持java.util.Date

您可以通过切换到java.sql.Date轻松解决此问题,或者您可以创建一个MappedColumnType来告诉您如何使用它。

implicit val javaUtilDateColumnType = MappedColumnType.base[java.util.Date, java.sql.Date](
  ud => new java.sql.Date(ud.getTime), sd => new java.util.Date(sd.getTime)
)