Slick не ORM
Так, Slick не поддерживает вложенные объекты, как спящий режим. Если вы сильно хотите иметь вложенные объекты, модель Slick не подходит для вашего варианта использования. Этот пункт также явно упоминается в документах по slick.
Ваш случай использования в Слик моделируется как этот
case class User(id: Int, name: String) //id is the primary key
case class Address(id: Int, name: String) //id is the primary key
case class UserAddresses(userId: Int, addressId: Int) //userId, addressId are the foreign keys.
Каждый из указанного класса случае запрашивает таблицу в базе данных и UserAddresses
таблица устанавливает связь между Пользователем и адрес. Так, для одного пользователя вы можете иметь один или несколько адресов идентификаторов в таблице адресов пользователей (типичный способ базы данных отношение моделирования один ко многим отношений между субъектами)
UserAddresses захватывает один-много отношений между Пользователем и адрес
Обратите внимание, что дизайн выше выглядит как типичный дизайн базы данных, который вы бы хотели сделать в случае отношений один-много. В Slick эти модели представляют собой реляционные таблицы. Таким образом, для каждой таблицы нам нужна одна модель, которая представляет эту таблицу в коде. Slick помогает в написании sql agnostic, композиционных, многоразовых, типичных и scala-сборников, таких как запросы. Итак, конец кода кода Slick выглядит как код манипуляции с коллекциями Scala.
Надеюсь, что я не заявляю о явном (IDK ваш фон программирования). Это классы объектов, которые вы хотели бы иметь (в своем приложении). Большинство реляционных баз данных не поддерживают объекты, они манипулируют строками, которые являются плоскими. Это означает, что ваши классы Slick, которые представляют ваши строки в базе данных, должны быть плоскими (без последовательностей, деревьев и т. Д.). –
Отношение, которое вы показываете, равно 1: N (у одного пользователя много адресов). Таким образом, вы бы сделали полное соединение (если пользователь должен иметь хотя бы один адрес) или левое соединение (если оно может иметь ноль или более адресов). И тогда вы получите 'Seq [(Пользователь, адрес)]' => группу пользователем и создадите объекты своего домена, как вы указали. См. [Здесь] (http://olivebh.com/scala-play-slick.html) для получения более подробной информации. –
Вот для более подробной информации о моделировании в slick http://youtube.com/watch?v=ciyjJLYIySY – pamu