Ассоциации в Activeslick - PullRequest
0 голосов
/ 08 мая 2018

Я пробовал Active-Slick и смог выполнить пример активного слика https://github.com/reactivemaster/active-slick-example

Но я не уверен, как управлять ассоциациями, используя Active-Slick. Пожалуйста, приведите пример.

Также я пытался добиться этого, используя метод, описанный ниже, но не уверен, что это хороший способ сделать это, и все еще имеет право называться активным шаблоном записи.

  BookService.scala
     val book= Book(None,"Harry Potter")
          val action = for {
            id <-  bookDao.insert(acc)
            y<-authorDao.insert(new Author(None,id,"J.K.Rowling"))
          }yield y

         db.run(action.transactionally

1 Ответ

0 голосов
/ 09 мая 2018

Мы используем UUID для столбца ID, и они генерируются в коде Scala, а не в базе данных. Я не знаю, как это будет работать с вашим «шаблоном активной записи», но это хорошо, потому что вы можете связать объекты сколько хотите, прежде чем обращаться к базе данных. Я также предпочитаю этот тип Id[T] в пользу отдельных типов, таких как BookId и AuthorId.

case class Id[+T](value: String) extends MappedTo[String]
case object Id {
  def generate[T]: Id[T] = Id[T](java.util.UUID.randomUUID().toString)
}

case class Author(authorId: Id[Author], name: String)
case class Book(authorId: Id[Book], title: String, authorId: Id[Author])

val newAuthor = Author(Id.generate, "JK Rowling")
val newBook = Book(Id.generate, "Harry Potter", newAuthor.id)

// do other stuff?

val action = for {
  _ <- authorDao.insert(newAuthor)
  _ <- bookDao.insert(newBook)
} yield 1
db.run(action.transactionally)

Надеюсь, это поможет.

...