Я пытаюсь выполнить несколько соединений в Slick 3.1.1. Результат, который я хотел бы достичь такой:Scala Slick 3.1 множественные соединения
SELECT * FROM customer LEFT JOIN customer_address ON customer.id = customer_address.customer_id LEFT JOIN address ON customer_address.address_id = address.id
Я попытался следующие:
val query = for {
c <- Customer
ca <- CustomerAddress if ca.customerId === c.id
a <- Address if a.id === ca.addressId
} yield (c, a)
Проблема здесь заключается в том, что если клиент не имеет адрес, что он не появляются, что имеет смысл.
Тогда я попытался это:
val query2 = for {
(c, ca, a) <- (Customer joinLeft CustomerAddress on (_.id === _.customerId)) joinLeft Address on (_._2.addressId === _.id)
} yield (c, a)
Проблема здесь состоит в том, что я получаю ошибку на _._2.addressId
, потому что _._2
является Rep
объектом.
Точная ошибка:
Error:(21, 110) value addressId is not a member of slick.lifted.Rep[Option[Models.Tables.CustomerAddress]]
(c, ca, a) <- (Customer joinLeft CustomerAddress on (_.id === _.customerId)) joinLeft Address on (_._2.addressId === _.id)
Auto генерироваться Slick класс Таблицы: http://pastebin.com/e4M3cGU8
Как я могу получить результаты, которые я хочу с Slick?
Не можете добавить ошибку в свои уведомления? –