私は簡単なPlayを書いています! 2 SlickアプリケーションでREST。私は、次のしているドメインモデル:ここ地図Slick oneToManyの結果はツリー形式
case class Company(id: Option[Long], name: String)
case class Department(id: Option[Long], name: String, companyId: Long)
class Companies(tag: Tag) extends Table[Company](tag, "COMPANY") {
def id = column[Long]("ID", O.AutoInc, O.PrimaryKey)
def name = column[String]("NAME")
def * = (id.?, name) <> (Company.tupled, Company.unapply)
}
val companies = TableQuery[Companies]
class Departments(tag: Tag) extends Table[Department](tag, "DEPARTMENT") {
def id = column[Long]("ID", O.AutoInc, O.PrimaryKey)
def name = column[String]("NAME")
def companyId = column[Long]("COMPANY_ID")
def company = foreignKey("FK_DEPARTMENT_COMPANY", companyId, companies)(_.id)
def * = (id.?, name, companyId) <> (Department.tupled, Department.unapply)
}
val departments = TableQuery[Departments]
とは、すべての関連部門と、すべての企業を照会するための私の方法です:
override def findAll: Future[List[(Company, Department)]] = {
db.run((companies join departments on (_.id === _.companyId)).to[List].result)
}
Unfortuneatelly私は木JSON形式のデータを表示したいので、私は構築する必要があります
case class CompanyDTO(id: Option[Long], name: String, departments: List[Department])
は、あなたがこのための最善の解決策は何か知っています:部門とすべての企業を取得し、CompanyDTOに何とかそのようなものを、それらをマッピングしたクエリ? List [(Company、Department)]をJSONフォーマッタでマッピングするか、CompanyDTOを使用するようにクエリを変更する必要がありますか?もしそうなら、どうすれば結果をCompanyDTOにマッピングできますか?