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);