我有一个连接许多表的查询。我希望能够参数化应该检索哪些字段(有时是复杂的 SQL Postgis 函数)。假设初始查询是这样构建的:
def buildQuery() = for {
c <- coffees if c.price > 9.0
s <- c.supplier
} yield (c.name, s.name)
现在我希望产生的值之一取决于我的参数,因此示例将变为:
val param = true
def buildQuery() = for {
c <- coffees if c.price > 9.0
s <- c.supplier
} yield (c.name, if (param) s.name else null)
这样的代码不起作用,Slick 内部会抛出 NullPointerException。
有没有什么合理的方法可以根据输入参数动态构建产量部分?
最佳答案
据我所知,您可以使用 slick 的“case dsl”:https://github.com/slick/slick/blob/master/src/main/scala/scala/slick/lifted/Case.scala
关于scala - 是否可以在 Slick 中定义动态投影?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27244372/