Slick 3 中的自动时间戳 - 插入时为空

Automatic timestamp in Slick 3 - null on insert

我定义了这样的列:

def lastChecked = column[Timestamp]("LAST_CHECKED", O.Default(new Timestamp(System.currentTimeMillis())))

当我在 table 中插入数据时,我忽略了这一列。但是 Slick 将此列作为空值插入。如何解决?

您需要为数据库级别的字段提供默认值。对于 HSQLDB,以这种方式定义列:

last_checked TIMESTAMP DEFAULT CURRENT_TIMESTAMP

在 slick 中定义时间戳类型的字段就足够了:

val lastChecked: Rep[java.sql.Timestamp] = column[java.sql.Timestamp]("last_checked")

根据精巧的文档 O.Default 仅用于 DDL 语句。