Digamos que eu tenha as seguintes entidades a seguir:
@Entity
public class Pessoa {
    ...
    private Endereco endereco;
    ...
}
@Entity
public class Endereco {
    ...
    private Logradouro logradouro;
    ...
}
@Entity
public class Logradouro {
    ...
    private String rua;
    private String cep;
    ...
}
estou criando minhas Specifications como as da aula. Exemplo
    public static Specification<PessoaModel> logradouro(Integer logradouroId) {
        if (logradouroId != null) {
            return ((root, criteriaQuery, criteriaBuilder) ->
                    criteriaBuilder.equal(root.get("pessoa").get("endereco").get("logradouroId")., logradouroId));
        } else {
            return null;
        }
    }Como faço pra criar uma specification pra uma busca (findAll()) por Pessoa pelo id do Logradouro?
Em SQL seria mais ou menos isso:
SELECT p.* FROM Pessoa p
JOIN  Endereco e on p.pessoa_id = e.pessoa_id
JOIN Logradouro l on e.logradouro_id = l.logradouro_id
where l.logradouro_id = 10;