Left Joins

Boa tarde.

Embora eu ja tenha alguma experiencia com outras linguagens de programacao, comecei a mexer com Hibernate e com JPA a pouquissimo tempo e estou tendo muita dificuldade para realizar a seguinte consultinha

        select a.ID, b.ID
        from "cliente".cliente a
        left join "cliente".cartao b
        on (a.id = b.cliente_id
         and b.situacao_cod = 2)

Ou seja…quero que retorne todos os clientes, que possuam cartao ou nao…mas esta segunda condicao do join e que esta dando muito problema. Alguem poderia me ajudar?

[quote=aslobo]
mas esta segunda condicao do join e que esta dando muito problema.[/quote]

E que problema está dando?

Nao consigo criar o select corretamente. Preciso saber o codigo do cliente, mas como nao ha referencia na tabela de cartoes para clientes gera um erro

 List<Object[]>clienteS; 
 CriteriaBuilder cb = entityManager.getCriteriaBuilder();
 CriteriaQuery<Object[]>query = cb.createQuery(Object[].class);
 Root<Cliente> from = query.from(Cliente.class);
 Join<Cliente, Cartao>joinCartao = from.join("clienteid", JoinType.LEFT);
 query.multiselect(from.get(Cliente_.id),
                joinCartao.get(Cartao_.id));
query.where(cb.equal(from.get(Cliente_.cpf), cpf), 
                cb.equal(joinCartao.get(Cartao_.situacaoCod), CartaoSituacao.ATIVO));
TypedQuery<Object[]> objectS = entityManager.createQuery(query);     
        
return objectS.getResultList();

Quando eu faço o select em Cartao com Join em Clientes, nao da erro, mas tambem nao retorna nada