Sou iniciante em Java e Hibernate.
Tenho o seguinte problema:
-
Quero criar um endereço e vinculá-lo ao Aluno. O relacionamento de Aluno com Endereço é ManyToMany. Não sei como usar List.
-
Quando tento criar as tabelas aparece o seguinte erro:
“Exception in thread “main” org.hibernate.AnnotationException: @OneToOne or @ManyToOne on br.com.quali.preparatorio.entidade.CursoDeIsoladas.coordenador references an unknown entity: br.com.quali.preparatorio.entidade.Coordenador
at org.hibernate.cfg.FkSecondPass.doSecondPass(FkSecondPass.java:56)
at org.hibernate.cfg.AnnotationConfiguration.processFkSecondPassInOrder(AnnotationConfiguration.java:474)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:295)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:915)
at br.com.quali.preparatorio.repositorio.TesteHibernate.main(TesteHibernate.java:26)
”
[code]<?xml version="1.0" encoding="UTF-8" ?>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
<property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/basededados</property>
<property name="hibernate.connection.username">postgres</property>
<property name="hibernate.connection.password">teste</property>
<property name="show_sql">false</property>
<property name="hibernate.generate_statistics">false</property>
<property name="hibernate.use_sql_comments">false</property>
<!-- property name="hibernate.hbm2ddl.auto">create-drop</property-->
<property name="hibernate.hbm2ddl.auto">create</property>
<mapping class="br.com.quali.banco.preparatorio.EntidadeBasica"/>
<mapping class="br.com.quali.banco.preparatorio.Pessoa"/>
<mapping class="br.com.quali.banco.preparatorio.Aluno"/>
<mapping class="br.com.quali.banco.preparatorio.Professor"/>
<mapping class="br.com.quali.banco.preparatorio.Coordenador"/>
<mapping class="br.com.quali.banco.preparatorio.CursoDeIsoladas"/>
</session-factory>
[/code]
A classe teste é
[code]package br.com.quali.preparatorio.repositorio;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import br.com.quali.preparatorio.entidade.Aluno;
import br.com.quali.preparatorio.entidade.Coordenador;
import br.com.quali.preparatorio.entidade.CursoDeIsoladas;
import br.com.quali.preparatorio.entidade.Endereco;
import br.com.quali.preparatorio.entidade.Professor;
public class TesteHibernate {
/**
* @param args
*/
public static void main(String[] args) {
AnnotationConfiguration ac = new AnnotationConfiguration();
ac.configure();
SessionFactory sf = ac.buildSessionFactory();
Session s = sf.openSession();
Aluno a = new Aluno();
a.setNome("Aluno1");
a.setCpf("11111111111");
Endereco e = new Endereco();
e.setDescricao("Rua do A, 123");
// em Pessoa eu tenho:
//@ManyToMany (mappedBy=“pessoas”)
// private List enderecos;
// Aluno, Professor e Coordenador estendem Pessoa que estende EntidadeBasica (que apenas tem o id)
// Eu quero vincular esse endereço acima ao Aluno1
// a.setEnderecos(List);
//
Professor p = new Professor();
p.setNome("Professor1");
p.setCpf("22222222222");
// Em Coordenador
// @OneToOne(mappedBy = “coordenador”)
// private CursoDeIsoladas cursoDeIsoladas;
Coordenador c = new Coordenador();
c.setNome(“Coordenador1”);
c.setCpf(“33333333333”);
//Em CursoDeIsoladas
// @OneToOne
// @JoinColumn(name=“id_coordenador”)
// private Coordenador coordenador;
CursoDeIsoladas d = new CursoDeIsoladas();
d.setDescricao(“Matemática”);
d.setCargaHoraria(“40”);
d.setCoordenador©;
System.out.println(c);
s.beginTransaction();
s.save(a);
s.save(p);
s.save(c);
s.save(d);
s.getTransaction().commit();
s.close();
System.out.println("fim");
}
}
[/code]