2016-02-06 2 views
0

Я понимаю, что Slick не ORM и поэтому не понимает отношений. Учитывая это, слабые классы таблиц в значительной степени отражают базовые таблицы базы данных, например. они будут включать свойство addressId, а не свойство Address. Все это имеет смысл для меня.Зачем использовать классы с Slick?

Я не понимаю, почему я также использовал бы класс case, если класс case также должен отражать таблицу? Учитывая, типичный человек, Адрес пример, как я понимаю, я не могу легко использовать:

case class Person(id: Option[Int], name: String, address: Option[Address]) 

, потому что пятно не может отображать от AddressID к опции [Адрес] т.е.

class PersonTable(tag: Tag) extends Table[Person](tag, "PERSON") { 
    def id = column[Long]("id", O.PrimaryKey, O.AutoInc) 
    def name = column[String]("name") 
    def addressId = column[Int]("address_id") 
    def * = (id, name, addressId) <> (Person.tupled, Person.unapply) 
} 

так что я необходимо создать класс класса Person, который выглядит так:

case class Person(id: Option[Int], name: String, address: Option[Int]) 

который является почти зеркалом PersonTable?

ответ

0

Slick Table s - сложный, поднятый тип, с которым вы не хотели бы работать напрямую. То, с чем вы хотите работать, - это последовательность некоторых «нормальных» типов scala. Созданный класс классов Person - это «обычный» тип scala, который вы можете использовать. Подумайте об этом, так как ваши реляционные данные, наконец, ускользают от реляционной модели и заканчиваются на объектно-ориентированной земле.

Смежные вопросы