I hope join supports custom on conditions, because it can get faster speed than where conditions. public <U> JPAJinqStream<Pair<T, U>> join( JinqStream.JoinWithSource<T, U> join, JinqStream.WhereForOn<T, U> on); 