All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.dellroad.querystream.jpa.RootStream Maven / Gradle / Ivy

The newest version!

/*
 * Copyright (C) 2018 Archie L. Cobbs. All rights reserved.
 */

package org.dellroad.querystream.jpa;

import jakarta.persistence.FlushModeType;
import jakarta.persistence.LockModeType;
import jakarta.persistence.Parameter;
import jakarta.persistence.TemporalType;
import jakarta.persistence.criteria.Expression;
import jakarta.persistence.criteria.JoinType;
import jakarta.persistence.criteria.Order;
import jakarta.persistence.criteria.Root;
import jakarta.persistence.criteria.Selection;
import jakarta.persistence.metamodel.PluralAttribute;
import jakarta.persistence.metamodel.SingularAttribute;

import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Function;

/**
 * {@link SearchStream} containing items representable as {@link Root}s.
 */
public interface RootStream extends FromStream> {

// Narrowing overrides (PathStream)

    @Override
     RootStream cast(Class type);

// Narrowing overrides (SearchStream)

    @Override
    RootStream distinct();

    @Override
    RootStream orderBy(Ref> ref, boolean asc);

    @Override
    RootStream orderBy(SingularAttribute attribute, boolean asc);

    @Override
    RootStream orderBy(SingularAttribute attribute1, boolean asc1,
      SingularAttribute attribute2, boolean asc2);

    @Override
    RootStream orderBy(SingularAttribute attribute1, boolean asc1,
      SingularAttribute attribute2, boolean asc2, SingularAttribute attribute3, boolean asc3);

    @Override
    RootStream orderBy(Function, ? extends Expression> orderExprFunction, boolean asc);

    @Override
    RootStream orderBy(Order... orders);

    @Override
    RootStream orderByMulti(Function, ? extends List> orderListFunction);

    @Override
    RootStream thenOrderBy(SingularAttribute attribute, boolean asc);

    @Override
    RootStream thenOrderBy(Ref> ref, boolean asc);

    @Override
    RootStream thenOrderBy(Order... orders);

    @Override
    RootStream thenOrderBy(Function, ? extends Expression> orderExprFunction, boolean asc);

    @Override
    RootStream groupBy(Ref> ref);

    @Override
    RootStream groupBy(SingularAttribute attribute);

    @Override
    RootStream groupBy(Function, ? extends Expression> groupFunction);

    @Override
    RootStream groupByMulti(Function, ? extends List>> groupFunction);

    @Override
    RootStream having(Function, ? extends Expression> havingFunction);

    @Override
    RootValue findAny();

    @Override
    RootValue findFirst();

    @Override
    RootValue findSingle();

// Narrowing overrides (QueryStream)

    @Override
    RootStream bind(Ref> ref);

    @Override
    RootStream peek(Consumer> peeker);

    @Override
    > RootStream bind(Ref ref, Function, ? extends S2> refFunction);

    @Override
     RootStream addRoot(Ref> ref, Class type);

    @Override
    RootStream filter(SingularAttribute attribute);

    @Override
    RootStream filter(Function, ? extends Expression> predicateBuilder);

    @Override
    RootStream limit(int maxSize);

    @Override
    RootStream skip(int num);

    @Override
    RootStream withFlushMode(FlushModeType flushMode);

    @Override
    RootStream withLockMode(LockModeType lockMode);

    @Override
    RootStream withHint(String name, Object value);

    @Override
    RootStream withHints(Map hints);

    @Override
     RootStream withParam(Parameter parameter, T value);

    @Override
    RootStream withParam(Parameter parameter, Date value, TemporalType temporalType);

    @Override
    RootStream withParam(Parameter parameter, Calendar value, TemporalType temporalType);

    @Override
    RootStream withParams(Iterable> params);

    @Override
    RootStream withLoadGraph(String name);

    @Override
    RootStream withFetchGraph(String name);

    @Override
    RootStream fetch(SingularAttribute attribute);

    @Override
    RootStream fetch(SingularAttribute attribute, JoinType joinType);

    @Override
    RootStream fetch(PluralAttribute attribute);

    @Override
    RootStream fetch(PluralAttribute attribute, JoinType joinType);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy