Использование Option вместо NOT NULL в Slick

У меня есть класс:

class Sitestats(tag: Tag) extends Table[(Int,String,String,Int,String)](tag, "SITESTATS"){
  def id = column[Int]("STAT_ID", O.PrimaryKey, O.AutoInc)
  def url = column[String]("STAT_URL")
  def httpstatus = column[String]("STAT_HTTPSTATUS")
  def contentlength = column[Int]("STAT_CONTENTLENGTH")
  def description = column[String]("STAT_DESC")

  def * : ProvenShape[(Int,String,String,Int,String)] = (id,url,httpstatus,contentlength,description)
}

Разрешение мне делать (используя slick)

 sitestats.ddl.create
 sitestats += ((3534,"http://google.com","TEST",22,"TEST"))
 sitestats += ((234,"http://google7.com","404",22,"TEST"))
 println(sitestats.list)

в результате чего ожидается (снип):

[info] List((1,http://google.com,TEST,22,TEST),(2,http://google7.com,404,22,TEST))

Я хотел бы, чтобы httpstatus мог быть нулевым, поэтому я изменил строку на

def httpstatus = column[Option[String]]("STAT_HTTPSTATUS")

в результате чего

[error]  found   : (scala.slick.lifted.Column[Int], scala.slick.lifted.Column[String], scala.slick.lifted.Column[Option[String]], scala.slick.lifted.Column[Int], scala.slick.lifted.Column[String])
[error]  required: scala.slick.lifted.ProvenShape[(Int, String, String, Int, String)]

что мне не хватает?


person FelixHJ    schedule 13.05.2015    source источник


Ответы (1)


Попробуйте обновить так:

def * : ProvenShape[(Int,String,Option[String],Int,String)] = (id,url,httpstatus,contentlength,description)

Вы забыли обновить определение таблицы. :)

Обновлять

sitestats += (Some(234,"http://google7.com","404",22,"TEST"))
person David S.    schedule 13.05.2015
comment
Результаты найдены в [ошибке] : Требуется строка (404) [ошибка]: Option[String] [ошибка] sitestats += ((234,google7.com,404,22,ТЕСТ)) - person FelixHJ; 13.05.2015