JPA - Como passar condição adicional no join

Minha duvida é como converter a seguinte consulta para CriteriaQuery e/ou JPQL:

SELECT *
FROM Servicos
LEFT JOIN ServicosADesconsiderar 
   ON Servicos.protocolo=ServicosADesconsiderar.protocolo AND ServicosADesconsiderar.indicador=1

Como passar esse “AND ServicosADesconsiderar.indicador=1” junto no join???

O AND é igual no JPQL, não vai mudar nada.

a diferença é que ao invés do nome da coluna, você vai usar o nome do atributo da classe

[quote=Rodrigo Sasaki]O AND é igual no JPQL, não vai mudar nada.

a diferença é que ao invés do nome da coluna, você vai usar o nome do atributo da classe[/quote]

Como assim?

tentei desta forma e não deu certo:

SELECT s  FROM Servicos  s
JOIN s.servicosADesconsiderar sad AND sad.indicador=1 

Obs. lembrando que preciso passar o AND no JOIN, não posso passar no WHERE porque não vai retornar a mesma consulta.

Ah tá, me desculpe. Agora eu entendi.

O JPA 2.0 não suporta a clausula ON, se não me engano. Então você vai ter que filtar no WHERE o que quiser selecionar.

cada vez desanimo mais com esse JPA…

se não for possível, vou ter que fazer da maneira que não queria:

SELECT s  FROM Servicos  s  
LEFT JOIN s.servicosADesconsiderar sad 
WHERE (sad.indicador=1 OR sad.indicador IS NULL)

tente isso:

SELECT s FROM Servicos s LEFT JOIN s.servicosADesconsiderar sad WITH (sad.indicador=1 OR sad.indicador IS NULL)

‘ON’ só será suportado na próxima versão do JPA.

[code]na verdade,

SELECT s FROM Servicos s
LEFT JOIN s.servicosADesconsiderar sad WITH (/* As condições que vc utilizaria no ON*/)[/code]

[quote=novato25][code]na verdade,

SELECT s FROM Servicos s
LEFT JOIN s.servicosADesconsiderar sad WITH (/* As condições que vc utilizaria no ON*/)[/code][/quote]

opa! assim funcionou, valeu!

agora vou se acho algo parecido com criteira.