在Scala / Slick中设置默认值

时间:2017-05-04 14:58:56

标签: scala playframework slick slick-3.0

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

request.body.asJson.map(_.validate[Foo] match {...}

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

这是我的进化文件:

CREATE TABLE Foo(
    ...
    deleted BOOLEAN NOT NULL DEFAULT FALSE,
    ...
)

这是我的模特(.scala):

case class Foo(
                    ...
                    deleted: Boolean,
                    ...)

这是我的道(.scala):

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

                def * = (..., deleted, ...) <> ((Foo.apply _).tupled, Foo.unapply)
        }

验证对模型的请求时出现问题。将deleted定义为Option[Boolean]时,会为None/Null列写deleted。将其定义为Boolean时,验证失败。 据推测,因为请求缺少属性deleted

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

0 个答案:

没有答案