как добавить ограничения внешнего ключа в Slick2 с платформой Play

Я хочу добавить ограничение внешнего ключа в одну из моих моделей Play2 Framework с Slick 2. Ссылаясь на документ Конфигурация Slick2-Mapping

Предположим, у меня есть две модели, определенные в двух файлах scala: Person и Address внутри каталога models.

Использование ссылки на код в документе не поможет, потому что оба класса лежат в отдельном файле. Как мне объявить внешний ключ от Person до Address? Любая ссылка на код будет более полезной.

Спасибо


person surenyonjan    schedule 11.01.2015    source источник
comment
В чем проблема? Пока классы находятся в одном пакете, они могут ссылаться друг на друга.   -  person Ashalynd    schedule 12.01.2015


Ответы (1)


Предполагая, что оба ваших класса находятся в одном пакете, этот код должен работать:

<Person.scala>
package the.package.name

type Person = (Int,String,Int,Int)
class People(tag: Tag) extends Table[Person](tag, "PERSON") {
  def id = column[Int]("ID", O.PrimaryKey, O.AutoInc)
  def name = column[String]("NAME")
  def age = column[Int]("AGE")
  def addressId = column[Int]("ADDRESS_ID")
  def * = (id,name,age,addressId)
  def address = foreignKey("ADDRESS",addressId,addresses)(_.id)
}

object people extends TableQuery(new People(_)) {
  val findByName = this.findBy(_.name)
  // more methods there
}


<Address.scala>
package the.package.name

type Address = (Int,String,String)
class Addresses(tag: Tag) extends Table[Address](tag, "ADDRESS") {
  def id = column[Int]("ID", O.PrimaryKey, O.AutoInc)
  def street = column[String]("STREET")
  def city = column[String]("CITY")
  def * = (id,street,city)
}

object addresses extends TableQuery(new Addresses(_)) {
  val findByName = this.findBy(_.name)
  // more methods there
}
person Ashalynd    schedule 12.01.2015