package jpasearch.repository.query.builder; import javax.persistence.metamodel.PluralAttribute; import javax.persistence.metamodel.SingularAttribute; /** * @author speralta */ public class FetchBuilder<F, FROM, TO> extends AbstractPathBuilder<FetchesBuilder<F>, F, FROM, TO> { public FetchBuilder(FetchesBuilder<F> parent, PluralAttribute<? super F, ?, TO> attribute) { super(parent, attribute); } public FetchBuilder(FetchesBuilder<F> parent, SingularAttribute<? super F, TO> attribute) { super(parent, attribute); } private <E> FetchBuilder(FetchesBuilder<F> parent, FetchBuilder<F, E, FROM> fetchBuilder, PluralAttribute<? super FROM, ?, TO> attribute) { super(parent, fetchBuilder, attribute); } private <E> FetchBuilder(FetchesBuilder<F> parent, FetchBuilder<F, E, FROM> fetchBuilder, SingularAttribute<? super FROM, TO> attribute) { super(parent, fetchBuilder, attribute); } public SearchBuilder<F> and() { return getParent().add(getPath()).toParent(); } public <E> FetchBuilder<F, TO, E> to(SingularAttribute<? super TO, E> attribute) { return new FetchBuilder<>(getParent(), this, attribute); } public <E> FetchBuilder<F, TO, E> to(PluralAttribute<? super TO, ?, E> attribute) { return new FetchBuilder<>(getParent(), this, attribute); } }