Left Join usando criteria

Tenho a seguinte consulta:

[code]select this_.id_cliente as y0_, this_.razao_social as y1_, this_.cidade as y2_, this_.nome_fantasia as y3_,
max(ped1_.data_pedido) as y4_
from cliente this_
inner join pedido ped1_ on this_.id_cliente=ped1_.id_cliente

left outer join titulo t4_ on this_.id_cliente=t4_.id_cliente and t4_.data_vencimento=? // USAR ESTE AND COM CRITERIA

inner join vendedor_cliente vc2_ on this_.id_cliente=vc2_.id_cliente
inner join vendedor v3_ on vc2_.id_vendedor=v3_.id_vendedor
where ped1_.data_pedido between ? and ? and v3_.id_vendedor=?
group by this_.id_cliente, this_.razao_social, this_.cidade, this_.nome_fantasia order by y3_ asc[/code]
Mas fazendo uso do criteria, nao consigo simular a mesma situação…=\

Criteria considera a relação entre duas classes para criar as condições JOIN (INNER, LEFT, RIGHT, OUTER e suas combinações).
Portanto, não temos como dizer como melhorar sem saber as classes envolvidas e o que você está tentando fazer.

Vou tentar explicar a situação, quero mostrar meus clientes que fizeram pedido em determinado periodo e que estão adimplentes, ou seja, não tem titulos vencidos;
Por isso usei o left join com a tabela de titulos.
Mas se deixo a comparaçao de data de vencimento do titulo na clausula where ele nao traz nada, e nao consegui colocar o and junto do left join.
Se puderes analisar e dizer se o que quero é possivel usando criteria. Valeu

[code]left outer join titulo t4_ on this_.id_cliente=t4_.id_cliente // and t4_.data_vencimento=? // USAR ESTE AND COM CRITERIA

se mudo a posiçao do meu data de vencimento ele nao traz nada

where ped1_.data_pedido between ? and ? and v3_.id_vendedor=? and t4_.data_vencimento=?

// and t4_.data_vencimento=? //[/code]

Classe titulo:

[code]@javax.persistence.Entity
@javax.persistence.Table(name = “titulo”)
public class Titulo implements Entidade {

private static final long serialVersionUID = -6831078183847196839L;

@Getter
@Setter
private br.com.supervisao.entidade.Cliente cliente;

}[/code]

Classe cliente:

[code]@javax.persistence.Entity
@javax.persistence.Table(name = “cliente”)
public class Cliente implements Entidade {

private static final long serialVersionUID = 550746169557515838L;

@javax.persistence.Id
@javax.persistence.Column(name = "id_cliente")
@Getter
@Setter
private java.lang.Long id;

@javax.persistence.OneToMany(mappedBy = "cliente")
@Getter
@Setter
private java.util.Set<Titulo> titulos;

@javax.persistence.OneToMany(mappedBy = "cliente", fetch = FetchType.LAZY)
@Getter
@Setter
private java.util.Set<Pedido> pedidos;

}[/code]

classe pedido:

[code]@javax.persistence.Entity
@javax.persistence.Table(name = “pedido”)
public class Pedido implements Entidade {
private static final long serialVersionUID = -5160847491057668483L;

@javax.persistence.Column(name = "data_pedido", nullable = false, length = 13, unique = false)
@Getter
@Setter
private java.util.Date dataPedido;

@javax.persistence.ManyToOne
@javax.persistence.JoinColumns({ @javax.persistence.JoinColumn(name = "id_cliente"), })
@Getter
@Setter
private br.com.supervisao.entidade.Cliente cliente;

}[/code]