У меня есть 2 класса, как это
case class Employee(id: Long,
name: String,
prefix: Option[String],
role: String)
case class Report(id: Long,
name: String,
employee_id: Long)
в формате JSON
{
"id":1,
"name":"employee",
"prefix":"emp",
"role":"eng",
"reports":[
{
"id":1,
"name":"report_1"
},
{
"id":2,
"name":"report_2"
}
]
}
у сотрудника может быть много отчетов (один-ко-многим), и у меня есть таблицы, связанные с внешним ключом. На мои вопросы, каким образом для извлечения данных из базы данных я пробовал внутреннее объединение, как это
val query: PostgresProfile.api.type#TableQuery[T]
def getAllQuery = {
query.filter(_.isDeleted === false)
}
================================================
def getAllEmployee: Future[Seq[Employee]] = {
val joinQuery = super.getAllQuery.join(reportRepo.getAllQuery).on(_.id === _.employee_id)
val joinRes: Future[Seq[(Employee, Report)]] = db.run(joinQuery.result)
joinRes map { tupleList =>
tupleList.map { tuple =>
Employee(tuple._1.id, tuple._1.name, tuple._1.prefix, tuple._1.role)
}
}
}
я получил данные, и когда я попытался сопоставить их с JSON, они также имеют дублирующиеся значения. Кто-нибудь может предложить способ сопоставления или лучший способ извлечения данных из БД с примером.
извините, если я допустил какие-либо ошибки, я новичок в игровой структуре, и спасибо заранее.