Dúvida em JPQL

Olá, pessoal, tudo bem?
Meu problema é simples, mas ainda não consegui enxergar uma solução, tenho esta query abaixo e preciso transformá-la em JPQL:


SELECT
	atendimento.DATA_COLETA,
	atendimento.NUM_ORDEM,

	receptor.NOME_RECEPTOR,
	receptor.NOME_HOSPITAL,
	receptor.NUM_DOACAO as NUM_DOACAO_RECEPTOR,
	receptor.TIPO_HEMO,
	receptor.TIPO_SANGUINEO,
	receptor.RH,
	receptor.VOLUME,

	doador.NUM_DOACAO as NUM_DOACAO_DOADOR
		
	FROM agets.atendimento atendimento
LEFT OUTER JOIN 
	agets.receptor receptor on receptor.ID_RECEPTOR = atendimento.ID_ATENDIMENTO
RIGHT OUTER JOIN
	agets.doador doador on doador.ID_DOADOR = atendimento.ID_ATENDIMENTO;

Tentei isso, porém, na consulta acima “filtrava” os valores de modo a não repetir os dados, já que basicamente se trata de um relacionamento ManyToMany, o que não consegui na consulta que fiz abaixo.

[code]public List<Atendimento> listarTodosOrdenadosPelasMaisAntigos() {
Query consulta = session.createQuery("Select a from Atendimento a left outer join a.doadores right outer join a.receptores ");
return consulta.list();

}[/code]

Creio que a minha maior dificuldade seja nesta parte, onde posso distinguir a consulta:

	FROM agets.atendimento atendimento
LEFT OUTER JOIN 
	agets.receptor receptor on receptor.ID_RECEPTOR = atendimento.ID_ATENDIMENTO
RIGHT OUTER JOIN
	agets.doador doador on doador.ID_DOADOR = atendimento.ID_ATENDIMENTO;

Boa tarde!

Não se se entendi direito a sua dúvida, mas se for o que eu estou pensando o DISTINCT(object) resolve.

Observe o código modificado abaixo:


public List<Atendimento> listarTodosOrdenadosPelasMaisAntigos() {
		Query consulta = session.createQuery("Select DISTINCT(a) from Atendimento a left outer join a.doadores right outer join a.receptores ");
		return consulta.list();

	}

Boa tarde, Danilo, tudo bem?
Bem, o distinct até seria muito interessante, mas neste caso, já tinha testado ele anteriormente.
Ele traz mesmo assim dados repetidos, não resolveu o problema…

Penso eu que a idéia ia ser a seguinte:
Selecionar os campos de atendimento e de receptor, juntamente com doadores, tudo bem consigo fazer os dois normalmente.
Porém, ao tentar obter seus valores respectivos tenho registros duplicados, pela razão do relacionamento:

@ManyToMany(cascade = CascadeType.MERGE, fetch = FetchType.LAZY)
	@JoinTable(name = "doador_atendimento", joinColumns = { @JoinColumn(name = "ID_ATENDIMENTO") }, inverseJoinColumns = { @JoinColumn(name = "ID_DOADOR") })
	private List&lt;Doador&gt; doadores = new ArrayList&lt;Doador&gt;();

	@ManyToMany(cascade = CascadeType.MERGE, fetch = FetchType.LAZY)
	@JoinTable(name = "receptor_atendimento", joinColumns = { @JoinColumn(name = "ID_ATENDIMENTO") }, inverseJoinColumns = { @JoinColumn(name = "ID_RECEPTOR") })
	private List&lt;Receptor&gt; receptores = new ArrayList&lt;Receptor&gt;();

A idéia é que ao fazer uma doação, possa ter um ou mais receptores, porém vários doadores. como é ManyToMany, há registros duplicados, e distinct não resolveu.

o que acontece é que devo obter os dados através dos campos onde se relacionam para que não haja redundância, ou seja, fazer um join levando em consideração onde os ID’s de atendimento , doadores e receptores se relacionam.

Muito obrigado pela sua dica até aqui.
Se precisar de mais código pode falar.