package Ġorg . example apps . great big . repository . specification Ċ Ċ import Ġorg . example apps . great big . domain . Article Ċ import Ġorg . example apps . great big . domain . Tag Ċ import Ġorg . example apps . great big . domain . User Ċ import Ġorg . springframework . data . jpa . domain . Specification Ċ import Ġjavax . persistence . criteria . Predicate Ċ Ċ object ĠArticles Spec ifications Ġ{ ĊĠĠĠ Ġfun Ġlast Articles ( tag : ĠTag ?, Ġauthor : ĠUser ?, Ġfav : ĠUser ?): ĠSpecification < Article > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSpecification Ġ{ Ġroot , Ġquery , Ġcb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpredicates Ġ= Ġmutable ListOf < Predicate >() ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtag ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtags Ġ= Ġroot . get < Collection < Tag >> (" tags ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpredicates . add ( cb . is Member ( tag , Ġtags )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġauthor ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġroot . get < String >(" author ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpredicates . add ( cb . equal ( user , Ġauthor )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfav ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfavor ited Ġ= Ġroot . get < Collection < User >> (" f avor ited ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpredicates . add ( cb . is Member ( fav , Ġfavor ited )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcb . and (* predicates . to Typed Array ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ