Boa tarde...
necessito de ajuda para realizar consultas utilizando Criteria.
Segue algumas das situações.
@Entity
public class Titulacao implements Serializable {
public Titulacao() { }
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long idTitulacao;
private String nomeTitulacao;
private String abreviacaoTitulacao;
@OneToMany(mappedBy="titulacao")
private List<Pesquisador> pesquisadores;
...
@Entity
@PrimaryKeyJoinColumn(referencedColumnName="idPessoa")
@Inheritance(strategy=InheritanceType.JOINED)
public class Pesquisador extends Pessoa implements Serializable {
public Pesquisador() { }
private boolean docente;
private boolean pesquisador;
private String regimeDeTrabalho;
private String curriculoLattes;
@ManyToOne
@JoinColumn(referencedColumnName="idTitulacao")
private Titulacao titulacao;
@OneToMany(mappedBy="orientador")
private List<Projeto> projetos;
...
Gostaria, por exemplo, de buscar a partir da classe titulação, todos os pesquisadores que tivesse determinada titulação. Ou então o inverso, a partir da classe pesquisadores buscar todos os pesquisadores que tenham determinada titulação.
-------------------------------------------------------------------------
Outra dúvida é quanto a consultas sobre classes que herdam características de outras classes. No exemplo acima, para cada classe que participe de um relacionamento eu tenho um objeto que indica a classe relacionada. Porém, no caso de herança isso não ocorre.
Segue o código:
Classe Pessoa@Entity
@Inheritance(strategy=InheritanceType.JOINED)
public class Pessoa implements Serializable {
public Pessoa() { }
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long idPessoa;
//Dados pessoais
private String nome;
private String sexo;
@Temporal(TemporalType.DATE)
private Calendar dataDeNascimento;
private String cpf;
private String identidade;
private String orgaoIdentidade;
private String ufIdentidade;
private String nacionalidade;
private String pais;
private boolean estrangeiro;
private String passaporte;
@Temporal(TemporalType.DATE)
private Calendar inicioDoVisto;
@Temporal(TemporalType.DATE)
private Calendar fimDoVisto;
private String endereco;
private String bairro;
private String cep;
private String cidade;
private String ufCidade;
private String ddd;
private String telefone;
private String celular;
private String email;
private String senha;
@ManyToOne
@JoinColumn(referencedColumnName="idCentro")
private Centro centro;
...
@Entity
@PrimaryKeyJoinColumn(referencedColumnName="idPessoa")
@Inheritance(strategy=InheritanceType.JOINED)
public class Bolsista extends Pessoa implements Serializable {
public Bolsista() { }
//Link para o currículo Lattes do bolsista
private String curriculoLattes;
//Dados báncarios do bolsista
private String agencia;
private String conta;
//Relacionamentos com outras tabelas
@OneToMany(mappedBy="bolsista")
private List<Projeto> projetos;
...
Como posso, utilizando criteria, buscar a partir da classe bolsista a pessoa relacionada com esse bolsista.
Ou, a partir da classe Pessoa, buscar por exemplo, todas as pessoas que são bolsista.
Fico no aguardo.. =)