Olá Pessoal!
Estou desenvolvendo no meu TCC um projeto para alocação de professores. Não estava utilizando Hibernate, mas na prévia do TCC, me obrigaram a usar o Hibernate. Bom, tendo problemas para usar o many-to-one para seguinte situação:
Um professor tem uma titulação (pós, mestre, doutor etc…) e titulação pode ter vários professores.
Segue abaixo as duas classes.
package bean;
import bean.Titulacao;
public class Professor {
private int pfr_id;
private String pfr_matricula;
private String pfr_nome;
private Titulacao ttl_id;
public int getPfr_id() {
return pfr_id;
}
public void setPfr_id(int pfr_id) {
this.pfr_id = pfr_id;
}
public String getPfr_matricula() {
return pfr_matricula;
}
public void setPfr_matricula(String pfr_matricula) {
this.pfr_matricula = pfr_matricula;
}
public String getPfr_nome() {
return pfr_nome;
}
public void setPfr_nome(String pfr_nome) {
this.pfr_nome = pfr_nome;
}
public Titulacao getTtl_id() {
return ttl_id;
}
public void setTtl_id(Titulacao ttl_id) {
this.ttl_id = ttl_id;
}
}
package bean;
public class Titulacao {
private int ttl_id;
private String ttl_descricao;
private int ttl_pontos;
public String getTtl_descricao() {
return ttl_descricao;
}
public void setTtl_descricao(String ttl_descricao) {
this.ttl_descricao = ttl_descricao;
}
public int getTtl_id() {
return ttl_id;
}
public void setTtl_id(int ttl_id) {
this.ttl_id = ttl_id;
}
public int getTtl_pontos() {
return ttl_pontos;
}
public void setTtl_pontos(int ttl_pontos) {
this.ttl_pontos = ttl_pontos;
}
}
No Hibernate o mapeamento ficou assim:
Professor:
<class name="Professor" table="professor">
<!-- Identificador da classe -->
<id name="pfr_id">
<generator class="increment"/>
</id>
<!-- Propriedades da classe -->
<property name="pfr_matricula"/>
<property name="pfr_nome"/>
<many-to-one name="ttl_id" class="Titulacao" column="ttl_id"/>
</class>
Titulacao:
<class name="Titulacao" table="titulacao">
<!-- Identificador da classe -->
<id name="ttl_id">
<generator class="increment"/>
</id>
<!-- Propriedades da classe -->
<property name="ttl_descricao"/>
<property name="ttl_pontos"/>
</class>
Ocorre que tenho um relatório (IReport) de Professores por Titulação. Fiz a seguinte query no ProfessorDAO:
public List getListaProfessoresPorTitulacao(int paramTitulacao) throws SistemaException {
List<Professor> todosProfessores = new ArrayList();
try {
Session session = ConexaoHibernate.getSession();
if (paramTitulacao != 0){
Query select = session.createQuery("titulacao.ttl_id, titulacao.ttl_descricao, professor.pfr_matricula, professor.pfr_nome" +
" from bean.Professor, bean.Titulacao" +
" where ttl_id = :id" +
" and titulacao.ttl_id = professor.ttl_id" +
" order by titulacao.ttl_descricao, pfr_nome");
select.setInteger("id",paramTitulacao);
todosProfessores = select.list();
}else {
Query select = session.createQuery("titulacao.ttl_id, titulacao.ttl_descricao, professor.pfr_matricula, professor.pfr_nome" +
" from bean.Professor, bean.Titulacao" +
" where titulacao.ttl_id = professor.ttl_id" +
" order by titulacao.ttl_descricao, pfr_nome");
todosProfessores = select.list();
}
session.close();
}
catch (Exception ex){
throw new SistemaException("ProfessorDao","getListaProfessor","Não foi possível buscar lista Professor Cadastrados no banco de dados.\n" + ex.getMessage(), "query");
}
return todosProfessores;
}
Quando executo o método acima ele apresenta o seguinte erro:
09:47:57,281 ERROR PARSER:33 - line 1:1: unexpected token: titulacao
exception.SistemaException
at dao.ProfessorDao.getListaProfessoresPorTitulacao(ProfessorDao.java:136)
at bean.TesteJasper.main(TesteJasper.java:47)
Outra dúvida que tenho é como fazer um REQUEST do campo Titulacao, que é do tipo OBJETO, que está no FORM.PROFESSOR.JSP.
Antes de usar o Hibernate eu tinha o seguinte REQUEST:
int ttl_id = Integer.parseInt(request.getParameter("titulacao"));
Na classe Professor.Java esta definido dessa forma:
private Titulacao ttl_id;
Mas agora, com o Hibernate, ttl_id é um Objeto e na classe Professor.java ficou assim:
private Titulacao ttl_id;
E agora não sei como tratar isso no request .
Toda ajuda é bem vinda.
Grato.
Maia.