Problema com JPQL

0 respostas
S

Olá pessoal, tudo bem?
Observem a query abaixo:

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;

O objetivo é transformá-la em JPQL de modo a listar com base no relacionamento já existente na classe Atendimento:

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

	@ManyToMany(cascade = CascadeType.MERGE, fetch = FetchType.LAZY)
	@JoinTable(name = "receptor_atendimento", joinColumns = { @JoinColumn(name = "ID_ATENDIMENTO") }, inverseJoinColumns = { @JoinColumn(name = "ID_RECEPTOR") })
	private List<Receptor> receptores = new ArrayList<Receptor>();
Consegui fazer isso, sem sucesso. Exibiu 1 registro apenas, onde deveriam existir 2, como se ignorasse parte do relacionamento:
"select a from Atendimento a" +
		" left outer join fetch a.receptores receptores" +
		" right outer join a.doadores doadores" +
		" where a.id = receptores.id and a.id = doadores.id"

A idéia é que onde possam existir pontos onde os relacionamentos se unem possa listar sem que os dados possam se repetir, como um distinct, porém algo mais "interno" do que isso.
Agradeço a todos que se disponibilizarem.

Criado 9 de fevereiro de 2013
Respostas 0
Participantes 1