我找不到列中包含的字符串结果...
这是表格:
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”方法,但我没有在网上找到任何例子。
感谢。
答案 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"
。