我的问题很简单。
我有一个专栏seqNum: Double
这是NOT NULL DEFAULT 1
in CREATE TABLE
声明如下:
CREATE TABLE some_table
(
...
seq_num DECIMAL(18,10) NOT NULL DEFAULT 1,
...
);
用户可以输入一个值seqNum
或者不是来自 UI。所以接受PLAY
形式就像:
case class SomeCaseClass(..., seqNum: Option[Double], ...)
val secForm = Form(mapping(
...
"seqNum" -> optional(of[Double]),
...
)(SomeCaseClass.apply)(SomeCaseClass.unapply))
光滑的表架构和对象如下所示:
case class SomeSection (
...
seqNum: Option[Double],
...
)
class SomeSections(tag: Tag) extends Table[SomeSection](tag, "some_table") {
def * = (
...
seqNum.?,
...
) <> (SomeSection.tupled, SomeSection.unapply _)
...
def seqNum = column[Double]("seq_num", O.NotNull, O.Default(1))
...
}
object SomeSections {
val someSections = TableQuery[SomeSections]
val autoInc = someSections returning someSections.map(_.sectionId)
def insert(s: someSection)(implicit session: Session) = {
autoInc.insert(s)
}
}
当我发送时seqNum
从用户界面来看,一切正常,但是当None
在那里,它打破了这样的说法不能在 NOT NULL 列中插入 NULL哪个是对的。这个问题解释了原因。
但是如何使用来解决这个问题slick
?不明白我应该在哪里检查None
?我正在创建并发送一个对象SomeSection
to insert
的方法SomeSections
Object.
我正在使用 sql-server,如果有的话。