読者です 読者をやめる 読者になる 読者になる

[Lift][Scala] モデルへの外部キー指定方法

Liftのメインページから、外部キー指定方法のドキュメントがたどれなかったので、メモっとく。
外部キー指定する方に、

  object 外部キー変数名 extends MappedLongForeignKey(this, 外部キーに指定するモデル)

を指定してやるだけでオK。

■外部キー設定される方

/**
 * The singleton that has methods for accessing the database
 */
trait MetaLCategory extends LCategory with KeyedMetaMapper[long, LCategory]
object LCategory extends MetaLCategory {
  override def dbTableName = "lcategories" // define the DB table name
}

class LCategory extends KeyedMapper[Long, LCategory] {
  def getSingleton = LCategory // what's the "meta" server
  def primaryKeyField = id
  
  // the primary key
  object id extends MappedLongIndex(this)
  
  object name extends MappedString(this, 100)
  object keywords extends MappedString(this, 255)
}

■外部キー設定する方

trait MetaArticle extends Article with KeyedMetaMapper[long, Article]
object Article extends MetaArticle {
  override def dbTableName = "articles" // define the DB table name
}

class Article extends KeyedMapper[Long, Article] {
  def getSingleton = Article // what's the "meta" server
  def primaryKeyField = id
  
  // the primary key
  object id extends MappedLongIndex(this)
  
  // column
  object title extends MappedString(this, 100)

  // forign key
  object category extends MappedLongForeignKey(this, LCategory)
}