2017-04-05 4 views
0

で働いていないオブジェクトのリストを挿入し、私はDB(postgresの)内のオブジェクトのリストを挿入する 私はしかし、私は私はslick3.1.1 を使用しています滑らかな

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)   
} 

を動作するコード以下の書かれています複数のDBクエリを実行しています。そこで、私はdb.runを1​​つだけ呼び出す方法を探していました。 だから私は、しかし、この二作品は、DBへの書き込みはありません

val userQuery = TableQuery[dbuserTable] 
for(user<-x.userList) 
{ 
    val users = userClass(user.name,user.id) 
    userQuery += users     
} 
val f = DBAccess.db.run(DBIO.seq(userQuery.result)) 
Await.result(f, Duration.Inf) 

以下のようなものを書きました。誰かが間違っているところを指摘できますか?

答えて

0

+=はあなたuserQueryを変化させません。 forループの繰り返しごとに挿入アクションが作成され、即座に破棄されます。

yieldのNBを使用)、それらを廃棄するのではなく、挿入アクションを蓄積してみてください。

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: _*)) 
関連する問題