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
}
これを行うために滑らかなコード生成をオーバーライドする方法はありますか?