2013-11-14 28 views
5

bir sorgu şablonu göz ardı edilirKaygan Parametreleri ben şöyle bir sorgu şablonu yazmaya çalışıyorum

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

Objects bir tablo olduğunu kaldırdı katıştırma ile:

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") 
    ... 
} 

Karşılaştığım sorun findByIdentifier("asdf", "weqr") 0 ile bir sorgu üretir olmasıdır

benim sorgu şablonunda ne eksik
select ... from "objects" where false 

doğru sorgulama yapmak: sadece false olduğunufıkra? Sık sık o kaygan bulmak

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

kendi sözdizimi ile biraz sakat olabilir ve mevcut belgeler özellikle iyi değil:

+0

Bu ya bir fark yaratmak veya olmayabilir. Filtre koşullarında '===' yerine '' yi kullanmayı denediniz mi? –

cevap

1

aşağıdaki sözdizimini deneyin.

Ayrıca findByIdentifier işi yapabilir:

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

Bunu umut olur ...

İlgili konular