package Ġcom . we ed ow . search y . join Ċ Ċ import Ġcom . we ed ow . search y . query . QueryBuilder Ċ import Ġcom . we ed ow . search y . query . query type . Q Entity Root Ċ import Ġcom . we ed ow . search y . query . query type . Q Path Ċ Ċ /** Ċ Ġ* ĠInterface Ġto Ġget Ġthe Ġcomputed Ġjoins Ġor Ġthe Ġ[ Q Path ] Ġrelative Ġto Ġan ĠEntity . Ċ Ġ*/ Ċ interface ĠEntity Join s Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġ[ Q Path ] Ġcorresponding Ġto Ġthe Ġgiven Ġ[ field Ġpath ][ field Path ] Ġrelative Ġto Ġthe Ġspecified Ġ[ Q Entity Root ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġfield Path Ġpath Ġof Ġa Ġfield . ĠThe Ġnested Ġfield Ġpath Ġcontains Ġdots Ġto Ġseparate Ġthe Ġparents Ġfields Ġ( eg . Ġvehicle . brand ) ĊĠĠĠĠ Ġ* Ġ@ param Ġq Entity Root Ġ[ Q Entity Root ] Ġobject ĊĠĠĠĠ Ġ* Ġ@ param Ġquery Builder Ġ[ QueryBuilder ] Ġinstance Ġto Ġfind Ġor Ġcreate Ġjoins ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ Q Path ] Ġrepresenting Ġthe Ġfield Ġfound Ġfrom Ġthe Ġ[ field Ġpath ][ field Path ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T > Ġget Q Path ( field Path : ĠString , Ġq Entity Root : ĠQ Entity Root < T >, Ġquery Builder : ĠQuery Builder < T >): ĠQ Path < *> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġevery Ġcomputed Ġjoins Ġfor Ġthe Ġroot ĠEntity . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġfilter Ġallow Ġto Ġfilter Ġthe Ġjoins Ġand Ġreturn Ġa Ġsub Ġset Ġaccording Ġto Ġthe Ġfilter Ġpredicate ĊĠĠĠĠ Ġ* Ġ@ return ĠMap Ġcollection Ġthat Ġcontains Ġjoin Ġname Ġas Ġkey Ġand ĠEntity Join Ġas Ġvalue ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Join s ( filter : Ġ( Entity Join ) Ġ-> ĠBoolean Ġ= Ġ{ Ġtrue Ġ}): ĠMap < String , ĠEntity Join > Ċ }