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

Scala 找不到匹配的形状。Slick不知道如何映射给定的类型,scala,playframework,slick,Scala,Playframework,Slick,我的案例课 case class Entry(id: Int, title: String, content: String, publishedDate: Date, views: Int) 申拿河 class Entries(tag: Tag) extends Table[Entry](tag, "ENTRIES") { def id = column[Int]("id", O.PrimaryKey, O.A

我的案例课

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

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]
类条目(tag:tag)扩展表[Entry](tag,“Entries”){
def id=列[Int](“id”,O.PrimaryKey,O.AutoInc)
def title=列[字符串](“标题”)
定义内容=列[字符串](“内容”)
def publishedDate=列[日期](“发布日期”)
def views=列[Int](“视图”)
覆盖def*=(id、标题、内容、发布日期、视图)(Entry.tuple、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)

def byId(id:Rep[Int])=for(条目方法
first
fistOption
在slick 3.0.0中被删除。使用
head
headOption
方法
first
fistOption
在slick 3.0.0.0中被删除。使用
head
headOption
您可能正在使用
java.util.Date
。我想
java.sql.Date
java.sql.Timestamp
是开箱即用的,但不支持
java.util.Date

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

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)
)

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

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

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)
)