此方法使用Slick 3.1.x并正确返回类型为Future[List[Analysis]]
的对象,但列表始终为空。为什么这样以及如何解决这个问题?
def readMany = {
val db = Database.forConfig("db1")
var list = new ListBuffer[Analysis]()
try {
val query = TableQuery[AnalysisDB]
val action = query.sortBy(_.name).result
val future = db.run(action).map(_.foreach {
case (analysis) => list += Analysis ( analysis.sk, analysis.name )
})
Future { list.toList }
} finally db.close
}
答案 0 :(得分:1)
列表在填充之前返回。您的app.scriptPreferences.userInteractionLevel = UserInteractionLevels.NEVER_INTERACT;
// your code here
//
// at the end of your script reset it to the default
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.INTERACT_WITH_ALL;
(数据库调用)被忽略/丢弃,并返回val future
(仍为空)。试试这个;
Future(list)
这也避免了臭臭的可变ListBuffer。