Scala 插入不在slick中工作的对象列表

Scala 插入不在slick中工作的对象列表,scala,slick,Scala,Slick,我正在使用slick3.1.1 我想在DB(postgres)中插入对象列表 我已经编写了以下代码,可以正常工作 for(user<-x.userList) { val users = userClass(user.name,user.id) val userAction = DBAccess.userTable.insertOrUpdate(users) val f = DBAccess.db.run(DBIO.seq(userA

我正在使用slick3.1.1 我想在DB(postgres)中插入对象列表 我已经编写了以下代码,可以正常工作

for(user<-x.userList)
{ 
    val users = userClass(user.name,user.id)                
    val userAction = DBAccess.userTable.insertOrUpdate(users)
    val f = DBAccess.db.run(DBIO.seq(userAction))
    Await.result(f, Duration.Inf)        
}

for(user
+=
不会改变您的
userQuery
。for循环的每次迭代都会创建一个插入操作,然后立即放弃它

尝试累积插入操作,而不是放弃它们(注意使用
yield
):

val usersTable=TableQuery[dbuserTable]

val inserts=for(user我知道这一点,但因为我刚刚发现了它,所以我将对此给出更新的答案

您可以使用
+=
插入列表

val usersTable = TableQuery[dbuserTable]
val listToInsert = x.userList.map(userClass(_.name, _.id))
val action = usersTable ++= listToInsert
DBAccess.db.run(action)

这将只执行一个同时插入所有内容的请求

val usersTable = TableQuery[dbuserTable]
val inserts = for (user <- x.userList) yield { 
  val userRow = userClass(user.name, user.id)
  usersTable += userRow                  
}
DBAccess.db.run(DBIO.seq(inserts: _*))
val usersTable = TableQuery[dbuserTable]
val listToInsert = x.userList.map(userClass(_.name, _.id))
val action = usersTable ++= listToInsert
DBAccess.db.run(action)