public SearchCriteria or(Term... terms) {
   this.terms.add(SearchElementFactory.or(terms));
   return this;
 }
 public SearchCriteria less(String identifier, Object value) {
   this.terms.add(SearchElementFactory.less(identifier, value));
   return this;
 }
 public SearchCriteria in(String identifier, List<String> status) {
   this.terms.add(SearchElementFactory.in(identifier, status));
   return this;
 }
 private SearchCriteria fetchs(String[] fetchs) {
   for (String fetch : fetchs) {
     this.relations.add(SearchElementFactory.fetch(fetch));
   }
   return this;
 }
 public SearchCriteria fetch(String parent, List<Term> terms) {
   this.relations.add(SearchElementFactory.fetch(parent, terms));
   return this;
 }
 public SearchCriteria join(String parent, Join subJoin) {
   this.relations.add(SearchElementFactory.join(parent, subJoin));
   return this;
 }
 public SearchCriteria join(String parent, Term... terms) {
   this.relations.add(SearchElementFactory.join(parent, terms));
   return this;
 }
 public SearchCriteria likeBegin(String identifier, String value) {
   this.terms.add(SearchElementFactory.like(identifier, value, Like.LikeType.BEGIN));
   return this;
 }
 public SearchCriteria like(String identifier, Object value) {
   this.terms.add(SearchElementFactory.like(identifier, value, Like.LikeType.CONTAINS));
   return this;
 }
 public SearchCriteria and(List<Term> terms) {
   this.terms.add(SearchElementFactory.and(terms));
   return this;
 }