У меня есть требование, где я должен вставить в таблицу книги и на основе автоматически сгенерированного идентификатора, я должен вставить в таблицу bookModules. Для каждого идентификатора автоинкремента bookModule, я должен вставить в таблицу bookAssoc.Но bookModule заполняется с помощью seq [bookMods], а данные bookAssociation заполняются с помощью Seq [userModRoles].
Я написал код ниже, чтобы добиться этого, но он только выполняет действие1.Мои внутренние действия не выполняются.Пожалуйста, помогите мне .
val action1 =bookDao.insert(book)
val action2 = action1.map { id => DBIO.sequence(
bookMods.map { bookMod =>
bookModDao.insert(new bookModule(None, id, bookMod.moduleId, bookMod.isActive))
.map { bookModId =>
userModRoles.map { userModRole =>
bookAssocDao.insert(new bookAssociation(None, bookModId, userModRole.moduleId, userModRole.roleId))
}
}
})
}
db.run(action2.transactionally)
РЕДАКТИРОВАТЬ 1: Добавление кода для понимания
val action1 = for{
bookId<-bookDao.insert(book) // db transaction
bookMod<-bookModules// this is scala collection // Iterate each element and Insert into tables
bookModId<-bookModDao.insert(new bookModule(None, bookId, bookMod.moduleId, bookMod.isActive))
userModRole<-userModRoles //// this is scala collection // Iterate each element and Insert into tables
bookAssocDao.insert(new bookAssociation(None, bookModId, userModRole.moduleId, userModRole.roleId))
}yield()
db.run(action2.transactionally)