【问题标题】:how to add foreign key constraints in Slick2 with Play framework如何使用 Play 框架在 Slick2 中添加外键约束
【发布时间】:2015-01-11 17:49:47
【问题描述】:

我想在我的一个带有 Slick 2 的 Play2 Framework 模型中添加外键约束。 参考文档Slick2-Mapping-Configuration

假设,我在两个 scala 文件中定义了两个模型:models 目录中的 PersonAddress

使用文档中的代码引用将无济于事,因为这两个类都位于单独的文件中。 我如何将Person 上的外键声明为Address?任何代码参考都会更有帮助。

谢谢

【问题讨论】:

  • 有什么问题?只要类在同一个包中,它们仍然可以相互引用。

标签: scala playframework-2.0 slick-2.0


【解决方案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
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    • 2017-06-10
    • 2018-08-16
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多