Duvida ao usar JPQL para selecionar registros de uma certa faixa etaria

galera é o seguinte: Tenho uma tabela Paciente (id,nome,endereco,data_nasc,nome_mae), uma tabela dose(id,nome), uma tabela Vacina(id,nome) e uma Tabela JoinTable chamada “Historico” para fazer o relacionamento entre elas.Cada paciente pode tomar várias doses de uma mesma vacina.

String nomedavacina=“TETRAVALENTE”;
String nomedadose=“primeiradose”;

gostaria de saber como é q eu faço para selecionar os nomes de todos os pacientes da minha joinTable chamada “Historico”, menores de 1 ano que não tomaram a primeira dose da vacina Tetravalente.

segue abaixo o mapeamento das tabelas.
Tabela paciente:


@Entity
@Table(name="paciente")
public class Paciente {
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private int id;

	private String nome;
	private String endereco;
	
	@Column(name="nome_mae")
	private String NomeMae;
	
	@Column(name="data_nasc")
	private Date DataNasc;
	
	@OneToMany
	private Collection<Vacina> vacinas;

Tabela Vacina:

@Entity
@Table(name="vacina")
public class Vacina {
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private int id;
	private String nome;
	//bi-directional many-to-one association to Historico
	@OneToMany(mappedBy="vacina")
	private List<Historico> historicos;

	//bi-directional many-to-many association to Paciente
	@ManyToMany(mappedBy="vacinas")
	private List<Paciente> pacientes;

	//bi-directional many-to-many association to Dose
    @ManyToMany
	@JoinTable(
		name="historico"
		, joinColumns={
			@JoinColumn(name="fk_vacina")
			}
		, inverseJoinColumns={
			@JoinColumn(name="fk_dose")
			}
		)
	private List<Dose> doses;

Tabela Dose:

@Entity
@Table(name="doses")
public class Dose {
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private int id;

	private String nome;

	//bi-directional many-to-one association to Historico
	@OneToMany(mappedBy="dos", cascade={CascadeType.MERGE})
	private List<Historico> historicos;

	//bi-directional many-to-many association to Vacina
	@ManyToMany(mappedBy="doses")
	private List<Vacina> vacinas;

Tabela historico:

@Entity
@Table(name="historico")
public class Historico {
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private int id;

	private Date data;

	//bi-directional many-to-one association to Dose
	@ManyToOne(cascade={CascadeType.MERGE}, fetch=FetchType.LAZY)
	@JoinColumn(name="fk_dose")
	private Dose dos;

	//bi-directional many-to-one association to Paciente
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="fk_paciente")
	private Paciente paciente;

	//bi-directional many-to-one association to Vacina
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="fk_vacina")
	private Vacina vacina;
 Agradeço a quem puder colaborar!

pô galera, dá uma força aí, tô precisando

Faça o seguinte, crei sua query em SQL convencional e depois converta para JPQL.

Um exemplo de JOIN

SELECT DISTINCT a FROM Author a INNER JOIN a.books b WHERE b.publisher.name = 'XYZ Press'