如何用光滑检索字符串列的值?

时间:2013-12-06 16:54:21

标签: database scala slick

我找不到列中包含的字符串结果...

这是表格:

object Equivalences extends Table[(Option[Int], String, String)]("EQUIVALENCES") {

    def id = column[Int]("EQV_ID", O.PrimaryKey, O.AutoInc)

    def racine = column[String]("RAC")

    def definition = column[String]("DEF")

    def * = id.? ~ racine ~ definition

}

这是错误的代码:

def ajoute_si_racine_absente(racine_ajoutée: String, definition_ajoutée: String) = {
    val cul = Query(Equivalences).filter( 
        equ => {
            println(equ.racine)
            equ.racine.toString.contains(racine_ajoutée)
        })
    if (cul.list().length == 0) {
        Equivalences.insert(None, racine_ajoutée, definition_ajoutée)
    }
}

错误的代码旨在插入一个值,如果它不存在,但是“println”会显示以下结果:“(EQUIVALENCES @ 409303125).RAC”并且它与列的内容不匹配。 也许我应该使用“getResult”方法,但我没有在网上找到任何例子。

感谢。

1 个答案:

答案 0 :(得分:1)

Karol S是对的。这样做你想要的:

def ajoute_si_racine_absente(racine_ajoutée: String, definition_ajoutée: String) = {
    val cul = Query(Equivalences).list().filter( 
        equ => {
            println(equ.racine)
            equ.racine.toString.contains(racine_ajoutée)
        })
    if (cul.length == 0) {
        Equivalences.insert(None, racine_ajoutée, definition_ajoutée)
    }
}

但它可能效率不高,因为你获取完整的表格。 Slick是一个带有API集合的查询构建器。您编写的所有内容都类似于并构建查询说明,直到您最终调用.list.run。只有这样才能执行查询。之前的所有内容都只是表示表,查询和列的占位符对象。列racine的占位符对象打印为"(EQUIVALENCES @409303125).RAC"