Montar consulta aninhada utilizando JPQl

0 respostas
M

Galera pelo amor de Deus, tô sofrendo aqui pra montar uma consulta aninhada utilizando JPQL.A query q coloquei aqui, me retorna todos os pacientes com uma determinada idade que tomaram uma determinada dose de uma vacina.Ela roda blzinha, porém eu quero incluí-la dentro de uma outra select pra me retornar todos os registros que não atendem a essa condição,retornada na primeira consulta.ou seja, todos os registros na mesma idade, que não tomaram a tal vacina.será q fui claro.
segue abaixo a minha tabela historico+a montagem da query.

public class Historico {
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private int id;

	private Date data;


	@ManyToOne(cascade={CascadeType.MERGE}, fetch=FetchType.LAZY)
	@JoinColumn(name="fk_paciente")
	private Paciente paciente;

	@ManyToOne(cascade={CascadeType.MERGE}, fetch=FetchType.LAZY)
	@JoinColumn(name="fk_vacina")
	private Vacina vacina;

	@ManyToOne(cascade={CascadeType.MERGE}, fetch=FetchType.LAZY)
	@JoinColumn(name="fk_dose")
	private Dose dos;
int codigo=1;
int num=2;
String nome="segunda dose";

Query q= em.createQuery("select h from Historico h where h.vacina.id= ?1 and h.dos.nome= :nome and (YEAR(CURDATE())-YEAR(h.paciente.DataNasc))= ?2");
q.setParameter(1, codigo);		
q.setParameter(2,num);
q.setParameter("nome",nome);
Criado 21 de maio de 2011
Respostas 0
Participantes 1