我在带有 Postgres DB 的 Scala Play 应用程序中使用 Slick 3.2 和 codegen。我的每个表都有一个用于 create_time 的时间戳字段,类型如下:TIMESTAMP default (now() at time zone 'utc')
. 我遇到的问题是 Slick 将模型字段生成为createTimestamp: Option[java.sql.Timestamp]
,然后null
在 createTimestamp 为 时为该列插入显式None
。我希望行为将值完全排除在插入语句之外,以便数据库使用其默认值。有没有办法做到这一点?
问问题
324 次
2 回答
1
您可以尝试以下方法:
插入一个对象
class YourModel(id: Option[Long], name: String, someOtherField: String, createdAt: Option[Timestamp])
根本不提供 ID 和时间戳:
val table = TableQuery[YourModelTable]
db.run( table.map( t => (t.name, t.someOtherField) ) += ("MyName", "MyOtherField") )
于 2017-05-29T14:34:52.487 回答
0
我找到了一种解决方法,当您指定此列是 AutoInc 时,它将在插入时被跳过,而是应用默认值
def createdAt = column[Instant]("created_at", O.AutoInc)
于 2020-03-05T16:24:04.980 回答