У меня есть следующая таблица, определенная в Slick, она соединяет две сущности по идентификатору, поэтому она состоит из двух идентификаторов, которые вместе образуют первичный ключ. Я не знаю, как добавить новое значение в таблицу.
trait CaptionNounComponent extends CaptionComponent with NounComponent {
self: HasDatabaseConfigProvider[JdbcProfile] =>
import profile.api._
class CaptionNounTable(tag: Tag) extends Table[CaptionNoun](tag, "caption_noun") {
def * : ProvenShape[CaptionNoun] = (captionId, nounId) <> ((CaptionNoun.apply _).tupled, CaptionNoun.unapply)
def nounId: Rep[Int] = column[Int]("NOUN_ID")
def captionId: Rep[Int] = column[Int]("CAPTION_ID")
def pk = primaryKey("primaryKey", (captionId, nounId))
def nounFK =
foreignKey("noun_fk", nounId, TableQuery[NounTable])(_.id)
def captionFK =
foreignKey("caption_fk", captionId, TableQuery[CaptionTable])(_.id)
}
}
Обычно я бы попробовал что-то вроде:
private val keyTable = TableQuery[CaptionNounTable]
def addKeys(keys: CaptionNoun): Future[Int] = db.run {
(keyTable returning keyTable.map(_.pk)) += keys
}
, но в этом случае это не работает