Ich versuche, Slick mit einer Spalte zu verwenden, die einen benutzerdefinierten Typ (eine Aufzählung) hat. Alles funktioniert, bis ich versuche, eine Abfrage zu schreiben, die die Spalte verwendet.Scala Slick Abfrage Vergleich eines benutzerdefinierten Benutzertyps (Enumeration) gibt Fehler
Beim Kompilieren ich einen Fehler auf dem folgenden Verfahren erhalten:
def findCredentials(credentialType:CredentialType)(implicit session: Session): List[Credential] = {
val query = for {
c <- credentials if c.credentialType === credentialType
} yield c
query.list
}
Hier ist der Fehler:
[error] ... value === is not a member of
scala.slick.lifted.Column[models.domain.enumeration.CredentialType.CredentialType]
[error] c <- credentials if c.credentialType === credentialType
Der Code Aufzählung ist hier:
object CredentialType extends Enumeration {
type CredentialType = Value
val Password, Token = Value
}
Die Tabellendefinition ist hier:
case class Credential(id: Long, userId: Long, credentialType: CredentialType)
class Credentials(tag: Tag) extends Table[Credential](tag, "credential") {
implicit val credentialTypeColumnType = MappedColumnType.base[CredentialType, String](
{ c => c.toString },
{ s => CredentialType.withName(s)}
)
def id = column[Long]("id", O.PrimaryKey, O.AutoInc)
def userId = column[Long]("user_id")
def credentialType = column[CredentialType]("type")
def * = (id, userId, credentialType) <> (Credential.tupled, Credential.unapply)
}
Ich habe eine Reihe anderer Fragen gegooglet, aber sie sind entweder nicht für Slick 2.x.x oder beinhalten keine Enumerationstypen.
Meine Frage ist, muss ich den Operator === irgendwo für Aufzählungstypen definieren, oder gibt es einen einfacheren Weg mit der aktuellen Slick 2.0.0 Funktionalität, die ich vermisse?
Dank
Danke, das hast du gemacht ... Ich habe versucht, dich zu wählen, aber ich habe noch nicht genug Punkte, um das zu tun :-) – SkydivingCoder