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!