These are chat archives for scalikejdbc/ja

17th
Mar 2016
Hiroki Shigemura
@shigemura0820
Mar 17 2016 06:10

scalikejdbcのqueryDSLを使って、一つのシングルトンオブジェクトから、二つのテーブルをjoinする方法はありますか?

つまり、以下のサンプルコードからCompanyNameオブジェクトを作ることなく、joinさせた結果を得る方法です。


case class Company(id: Int, companyName: CompanyName)
case class CompanyName(companyId: Int, name: String)

object Company extends SQLSyntaxSupport[Company] {
  private val  c = Company.syntax("c")
  private val ca = CompanyName.syntax("ca")

  def findById(id: Int)(implicit session: DBSession = AutoSession):Company = {
    withSQL {
     select.from(Company as c)
       .leftJoin(CompanyName as ca)
       .on(ca.company_id, c.id)
       .where.eq(c.id, id)
    }.map { 
   // Do something.
    }.single.apply()
  }
}

object CompanyName extends SQLSyntaxSupport[CompanyName] { }