在Slick表定义中使用数据库函数 - 如何?

时间:2015-04-15 17:53:14

标签: postgresql scala slick slick-3.0

有没有人成功使用Slick(我目前使用3.0.0-RC3,最新的可用版本)来生成包含特定于DB的功能的表定义?如果是这样,如何实现呢?

示例:我在Postgres中有一个列,其定义如下:

"request_date" timestamp default now(),

我尝试(失败)在Slick DDL中描述。

首次尝试:

def requestDate = column[Option[DateTime]]("request_date", O Default "now()")

当然,这被拒绝了:

[error] <path-to-file>: type mismatch;
[error]  found   : String("now()")
[error]  required: Option[org.joda.time.DateTime]
[error]     def requestDate = column[Option[DateTime]]("request_date", O Default "now()")

好的,我试图定义一个SimpleFunction(我已经有了DateTime转换器):

val dbNow = SimpleFunction.nullary[DateTime]("now")
def requestDate = column[Option[DateTime]]("request_date", O Default dbNow)

产生了另一个错误:

[error] <path-to-file>: type mismatch;
[error]  found   : slick.lifted.Rep[org.joda.time.DateTime]
[error]  required: Option[org.joda.time.DateTime]
[error]     def requestDate = column[Option[DateTime]]("request_date", O Default dbNow)

我也尝试了SimpleLiteral[DateTime]("now()"),这导致了类似的错误。 (删除选项也没有帮助。)

任何想法都将不胜感激。有点令人沮丧的是,这么简单的事情似乎并不容易获得......

1 个答案:

答案 0 :(得分:0)

目前不支持:https://github.com/slick/slick/issues/214。您需要使用纯SQL

相应地更改表