4

slick 2.x の codegen機能を使用して、データベース スキーマから Scala モデルを生成しています。ただし、外部キー制約をトラバースして関連モデルを生成することは可能ですか?たとえば、このスキーマがある場合

CREATE TABLE people(id INT PRIMARY KEY AUTO INCREMENT, name VARCHAR(31));
CREATE TABLE dogs(name VARCHAR(31), ownerId INT FOREIGN KEY people(id));

slick から次のモデルを取得します。

case class PeopleRow(id: Int, name: String)
case class DogsRow(name: String, ownerId: Int)

しかし、私が実際に欲しいのはこれです:

case class PeopleRow(id: Int, name: String)
case class DogsRow(name: String, owner: PeopleRow)

またはさらに良い:

case class PeopleRow(id: Int, name: String) {
  def dogs: List[DogsRow]   // return items from dogs table that has this.id as ownerId
}

case class DogsRow(name: String, ownerId: People) {
  lazy val owner: People  // lazy on-demand or, can be a def too
}

これを行うために滑らかなコード生成をオーバーライドする方法はありますか?

4

1 に答える 1