在 Scala/Slick 中设置默认值

Noc*_*ebo 5 scala playframework slick slick-3.0

我正在尝试在 Play 框架中使用 Scala/Slick 保存数据。我正在通过 json 发送请求,并尝试通过将其与如下模型匹配来验证所述请求:

request.body.asJson.map(_.validate[Foo] match {...}
Run Code Online (Sandbox Code Playgroud)

问题是:如何设置默认列值(为 false)?

这是我的进化文件:

CREATE TABLE Foo(
    ...
    deleted BOOLEAN NOT NULL DEFAULT FALSE,
    ...
)
Run Code Online (Sandbox Code Playgroud)

这是我的模型(.scala):

case class Foo(
                    ...
                    deleted: Boolean,
                    ...)
Run Code Online (Sandbox Code Playgroud)

这是我的 dao (.scala):

 class Foo(tag: Tag) extends TableFoo(tag, "Foo"){
            ...
                def deleted = column[Boolean]("deleted", O.Default(false))
            ...

                def * = (..., deleted, ...) <> ((Foo.apply _).tupled, Foo.unapply)
        }
Run Code Online (Sandbox Code Playgroud)

验证模型请求时出现问题。定义deleted为时Option[Boolean],它None/Null为列写入deleted。将其定义为 时Boolean,验证失败。大概是因为请求缺少 属性deleted

Option[Boolean]当验证失败或者只是写入的情况下,为什么要定义默认值None/Null?有没有一种简单的方法可以在 Scala/Slick 或 Evolutions 中设置可靠的默认值?