트랜잭션에서 3 개의 테이블에 삽입하는 것이지만 첫 번째 테이블에서는 삽입을 사용합니다. 여기 Slick 3 - 다른 테이블을 기반으로 트랜잭션 방식으로 여러 테이블에 삽입
는 별개의 쿼리입니다val personId = persons returning persons.map(_.id)) += Person(occupation)
translatedProperty += TranslatedProperty(languageId, propertyId, propertyName)
personProperties += PersonProperty(personId, propertyId, propertyValue)
지금 어디 선가에서
Seq(propertyName, propertyValue)
을받을 수 있도록 반복.
위와 같이 순차적으로 삽입하면 데이터베이스가 작동하지 않을 때까지 모든 것이 작동합니다. 따라서 위의 삽입을 트랜잭션 방식으로하고 싶습니다.
은 그래서 시도 : 다음props = (properties.values.map { ...
(대신
<-
내가
=
를 사용)으로하지만 아무 소용이 시도
[error] found : Seq[Unit] [error] required: slick.dbio.DBIOAction[?,?,?] [error] props <- (properties.values.map
:
val dbAction = (for {
val personId = persons returning persons.map(_.id)) += Person(occupation)
props <- (properties.values.map {
x =>
{
val name = x.key
val value = x.value
translatedProperties += TranslatedProperty(languageId, propertyId, name)
personProperties += PersonProperty(personId, propertyId, value)
}
})
} yield()).transactionally
db.run(dbAction)
이 나에게 컴파일 오류를 제공합니다. 그 사람은 삽입 되나 속성은 절대 사용되지 않습니다.
내가 뭘 잘못하고 있니?
props
은 단지 하나가 아닌 Seq[FixedSqlAction]
이 될 것이라고 생각합니까?
여기서 h2를 사용한다고 언급해야합니다.