
com.speedment.runtime.join.builder.JoinBuilder3 Maven / Gradle / Ivy
package com.speedment.runtime.join.builder;
import com.speedment.common.function.TriFunction;
import com.speedment.common.tuple.Tuple;
import com.speedment.common.tuple.TuplesOfNullables;
import com.speedment.common.tuple.nullable.Tuple3OfNullables;
import com.speedment.runtime.config.identifier.TableIdentifier;
import com.speedment.runtime.field.trait.HasComparableOperators;
import com.speedment.runtime.join.Join;
import com.speedment.runtime.join.trait.HasDefaultBuild;
import com.speedment.runtime.join.trait.HasJoins;
import com.speedment.runtime.join.trait.HasOnPredicates;
import com.speedment.runtime.join.trait.HasWhere;
/**
* Join Builder stage used when only 3 tables has been specified so far.
*
* @param the first entity type
* @param the second entity type
* @param the third entity type
*
* @author Per Minborg
* @author Emil Forslund
* @since 3.1.1
*/
public interface JoinBuilder3
extends HasJoins, JoinBuilder4>,
HasWhere>,
HasDefaultBuild> {
@Override
AfterJoin innerJoinOn(HasComparableOperators joinedField);
@Override
AfterJoin leftJoinOn(HasComparableOperators joinedField);
@Override
AfterJoin rightJoinOn(HasComparableOperators joinedField);
// @Override
// AfterJoin fullOuterJoinOn(HasComparableOperators joinedField);
@Override
JoinBuilder4 crossJoin(TableIdentifier joinedTable);
@Override
default Join> build() {
return build(TuplesOfNullables::ofNullables);
}
/**
* Creates and returns a new Join object where elements in the Join
* object's stream method is created using the provided {@code
* constructor}.
*
* @param the type of element in the Join object's stream
* method.
* @param constructor to use to create stream elements.
* @return a new Join object where elements in the Join object's stream
* method is of a default {@link Tuple} type
*
* @throws NullPointerException if the provided {@code constructor } is
* {@code null}
*/
Join build(TriFunction constructor);
interface AfterJoin
extends HasOnPredicates> {}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy