Scala 光滑投影-理解类型错误
我有下面的代码,试图用伴随类建立一个相对简单的表映射Scala 光滑投影-理解类型错误,scala,slick,Scala,Slick,我有下面的代码,试图用伴随类建立一个相对简单的表映射 case class Client( id: Integer, givenName: String, familyName: String, birthDate: Option[Date], nationality: Option[String] ) class ClientsTable(tag: Tag) extends Table[Client](tag, "Client")
case class Client(
id: Integer,
givenName: String,
familyName: String,
birthDate: Option[Date],
nationality: Option[String]
)
class ClientsTable(tag: Tag) extends Table[Client](tag, "Client") {
def id = column[Int]("ID", O.PrimaryKey, O.AutoInc)
def givenName = column[String]("GIVEN_NAME", O.NotNull)
def familyName = column[String]("FAMILY_NAME", O.NotNull)
def birthDate = column[Date]("BIRTH_DATE", O.Nullable)
def nationality = column[String]("NATIONALITY", O.Nullable)
def * = (id, givenName, familyName, birthDate.?, nationality.?) <> ((Client.apply _).tupled, Client.unapply)
}
现在,我已经前后阅读了一篇文章,但我仍然遗漏了一些东西
我知道这个投影函数试图创建表的默认投影,以便以后使用DSL进行查询。我明白了,我在这里要做的是将一系列元组(真正从数据库返回的元组)转换成一系列
客户机
对象。我不完全理解
以及之后发生的一切的魔力,因此我有点被困在如何解决这个错误上。Int和Integer
之间有区别。我想可能是罪魁祸首。是的,就是这样。使用scala.Int而不是java.lang.Integer是否惯用?当然。我不认为我在java兼容的代码片段和库之外看到过java.lang.Integer
。Scala的Int
一路走来。
No matching Shape found. Slick does not know how to map the given types.
Possible causes: T in Table[T] does not match your * projection. Or you use an unsupported type in a Query (e.g. scala List).
Required level: scala.slick.lifted.FlatShapeLevel Source type: (scala.slick.lifted.Column[Int], scala.slick.lifted.Column[String], scala.slick.lifted.Column[String], scala.slick.lifted.Column[Option[java.sql.Date]], scala.slick.lifted.Column[Option[String]]) Unpacked type: (Integer, String, String, Option[java.sql.Date], Option[String]) Packed type: Any