gpt4 book ai didi

scala - 如何在 Slick TableQuery 对象上默认应用过滤器?

转载 作者:行者123 更新时间:2023-12-01 23:44:53 25 4
gpt4 key购买 nike

在 slick 中,我有一个看起来像这样的设置:

class Users(tag: Tag) extends Table(tag) {
def name = column[String]
def disabled = column[Boolean]
def * = ...
}

object Users extends TableQuery(new Users(_)) {}

我想要的是任何时候有人使用 Users 对象查询数据库,它排除禁用用户。例如:

Users.where(_.name === "Fred")

执行:

从 name = 'Fred' 和 disabled = false 的用户中选择 *

这可能吗?我似乎无法在 TableQuery 对象中找到任何要覆盖的内容以让我执行此操作。

感谢任何可以阐明这一点的光。

最佳答案

您应该能够做的一件事是将您的查询定义为简单的 Scala 表达式/函数:

val disabledUsers = Users.filterNot(_.disabled)

上面只定义了一个过滤掉残疾人的查询。然后,您可以在不同的程序点多次将其与更具体的查询结合起来:

disabledUsers.where(_.name === "Fred")

我相信 Slick 应该足够聪明,可以将查询编译和优化为单个 SELECT

关于scala - 如何在 Slick TableQuery 对象上默认应用过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29853260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com