2013-11-14 26 views
5

我想编写一个查询模板,像这样被忽略油滑参数在查询模板

def findByIdentifier(id: String, issuer: String): Option[Object] = 
    byIdentifier(id, issuer).firstOption 

Objects是表与解除嵌入:

case class Object(val identifer: String, val identifierIssuer: String) 

object Objects extends Table[Object]("objects") { 
    def identifier = column[String]("identifier") 
    def identifierIssuer = column[String]("identifier_issuer") 
    ... 
} 

我遇到的问题是,findByIdentifier("asdf", "weqr")产生查询与where条款,只是false

select ... from "objects" where false 

什么我在我的查询模板缺少有适当的查询?

+0

这可能会或可能不会有所作为。你有没有在过滤条件中使用'is'而不是'==='? –

回答

1

试试下面的语法:

val byIdentifier = for { 
    (identifier, issuer) <- Parameters[(String, String)] 
    o <- Objects 
    if o.identifier === identifier 
    if o.identifierIssuer === issuer 
} yield o 

我经常发现,光滑可有点靠不住的,其语法和当前文档也不是特别好。

你也可以让你的findByIdentifier做的工作:

def findByIdentifier(id: String, issuer: String): Option[Object] = { 
    Query(Object).where(_.identifier === id).where(_.identifierIssuer === issuer).run.headOption 
} 

我希望帮助...