我想用我定义的类存储一些东西:
case class Contact(var name: String, var phone: Option[String], val email: String)
object Contacts extends Table[Contact]("CONTACTS") {
def email = column[String]("email", O.PrimaryKey)
def name = column[String]("name")
def phone = column[String]("phone", O.Nullable)
def * = name ~ phone ~ email <> (Contact.apply _, Contact.unapply _)
}
错误是:
[error] cannot be applied to ((String, Option[String], String) =>
models.Contact, models.Contact => Option[(String, Option[String],
String)]) [error] def * = name ~ phone ~ email <> (Contact.apply _,
Contact.unapply _)
我理解,如果我将Table[Contact]
更改为Table[(String, String, String)]
,那就可以了。但我只想将Contact
作为一个表,而Contact类可以为另一个类Contact
提供服务,可以为User
类提供服务。
我该如何实现?
答案 0 :(得分:1)
编译错误只是电话字段(Option[String]
)与电话列(String
)之间类型不匹配的结果。
正如@cvogt建议的那样,您可以使用Option
为电话栏修复不匹配问题:
def phone = column[Option[String]]("phone")
或者,您可以更改*
方法,以便它可以在案例类的Option
字段和表格的Nullable
列之间正确转换:
def * = name ~ phone.? ~ email <> (Contact, Contact.unapply _)
答案 1 :(得分:1)
使用Option类型而不是O.Nullable for phone:
def phone = column[Option[String]]("phone")