我想在我的代码中使用 PostgreSQL 的一些额外功能,但我不想用 SQL 字符串插值填充该位置
目前我有:
/** Use 'now()' through Slick. */
val psqlNow = SimpleFunction.nullary[java.sql.Date]("now")
//Not really my code, but we only care for 2 lines.
def aQuery(limiter: Column[Int]) = {
myTable
.filter(_.validFrom >= psqlNow)
.filter(_.validUntil <= psqlNow)
.filter(_.fakeId === limiter).map(e => (e.fakeId, e.name)
}
但是我想使用&#39; CURRENT_DATE&#39; ,我是一个文字(并使用它代替&#34;现在&#34; 抛出异常)。有人可以提供一个实际的例子,因为我无法编译:
/** Use 'CURRENT_DATE' through Slick. */
val psqlNow = SimpleLiteral("CURRENT_DATE")(...WHAT GOES HERE?...)
//Not really my code, but we only care for 2 lines.
def aQuery(limiter: Column[Int]) = {
myTable
.filter(_.validFrom >= psqlNow)
.filter(_.validUntil <= psqlNow)
.filter(_.fakeId === limiter).map(e => (e.fakeId, e.name)
}
我还想更改以下内容以解除 Slick ,我可以使用 SimpleLiteral (以某种方式将&#39; count(*) OVER()将已过滤的&#39; 记录到生成的查询中?
SELECT *, count(*) OVER() recordsFiltered FROM example
WHERE id = $1
这些例子很简单,实际代码是过滤标准的一系列折叠。
答案 0 :(得分:2)
import scala.slick.ast.TypedType
val current_date = Column.forNode[java.sql.Date](new SimpleLiteral("CURRENT_DATE")(implicitly[TypedType[java.sql.Date]]))
诀窍。目前缺少更好的支持。
我添加了PR,所以在Slick 2.2中它将得到支持:
val current_date = SimpleLiteral[java.sql.Date]("CURRENT_DATE")