defining a many-to-one reference in a Slick case class -


another question answers how define one-to-many association, defining method in "one" case class (directorate) returns seq of "many" class (servicearea). doesn't address "bidirectional" part of question.

using example, i'd see how traverse association other direction. instead of

case class servicearea(areacode: string, dircode: string, name: string) 

i'd see

case class servicearea(areacode: string, directorate: directorate, name: string) 

is possible slick? because when try like

object serviceareas ...   def * = areacode ~ directorate ~ name <> (servicearea, servicearea.unapply _) 

it fails compile, not finding implicit value evidence parameter of type typemapper[foreignkeyquery[serviceareas,servicearea]].

you have adjust way of thinking little. slick handles composition , execution of queries, mentioned in comment, it's not orm (thank goodness).

have @ code referenced:

case class servicearea(areacode: string, dircode: string, name: string)  object serviceareas extends table[servicearea]("service_areas") {    def areacode = column[string]("areae_code", o.primarykey)    def dircode = column[string]("directorate_code")    def name = column[string]("name")    def directorate = foreignkey("dir_fk", dircode, directorates)(_.dircode)    def * = areacode ~ dircode ~ name <> (servicearea, servicearea.unapply _) } 

the link directorate defined navigatable foreign key.

so can write query this:

   def directorates = {     area <- parameters[string]     sa <- serviceareas if sa.areacode === area     dir <- sa.directorate   } yield dir 

which yield directorate each match.


Comments