Olá, estou aprendendo mexer no hibernate annotations e estou fazendo um exemplo e deu um erro aqui:
org.hibernate.InvalidMappingException: Could not parse mapping document from resource hibernate.properties
at org.hibernate.cfg.Configuration.addResource(Configuration.java:569)
at exemplo.modelo.GerarTabelas.main(GerarTabelas.java:35)
Caused by: org.hibernate.MappingException: Could not parse mapping document in input stream
at org.hibernate.cfg.AnnotationConfiguration.addInputStream(AnnotationConfiguration.java:735)
at org.hibernate.cfg.Configuration.addResource(Configuration.java:566)
… 1 more
Caused by: org.dom4j.DocumentException: Error on line 1 of document : Content is not allowed in prolog. Nested exception: Content is not allowed in prolog.
at org.dom4j.io.SAXReader.read(SAXReader.java:482)
at org.hibernate.cfg.AnnotationConfiguration.addInputStream(AnnotationConfiguration.java:725)
As minhas classes Mapeadas são estas:
Classe aluno:
package exemplo.modelo;
/**
*
-
@author Ricardo
*/
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.CascadeType;
@Entity
@PrimaryKeyJoinColumn(name = “idPessoa”)
public class Aluno extends Pessoa {
private Integer matricula;
private List turmas;
public Aluno() {
}
public Integer getMatricula() {
return matricula;
}
public void setMatricula(Integer matricula) {
this.matricula = matricula;
}
@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
public List getTurmas() {
return turmas;
}
public void setTurmas(List turmas) {
this.turmas = turmas;
}
}
Classe curso
package exemplo.modelo;
/**
*
-
@author Ricardo
*/
import java.io.Serializable;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
@Entity
public class Curso implements Serializable {
private Long idCurso;
private String nome;
private String descricao;
private List disciplinas;
public Curso() {
}
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
public Long getIdCurso() {
return idCurso;
}
public void setIdCurso(Long idCurso) {
this.idCurso = idCurso;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
@OneToMany(mappedBy = "Curso")
@OrderBy("idDisciplina")
public List getDisciplinas() {
return disciplinas;
}
public void setDisciplinas(List disciplinas) {
this.disciplinas = disciplinas;
}
}
Classe disciplina
package exemplo.modelo;
/**
*
-
@author Ricardo
*/
import java.io.Serializable;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.OneToMany;
import javax.persistence.ManyToOne;
import javax.persistence.JoinColumn;
import javax.persistence.CascadeType;
import javax.persistence.OrderBy;
@Entity
public class Disciplina implements Serializable {
private Long idDisciplina;
private String nome;
private String ementa;
private Curso curso;
private List turmas;
public Disciplina() {
}
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
public Long getIdDisciplina() {
return idDisciplina;
}
public void setIdDisciplina(Long idDisciplina) {
this.idDisciplina = idDisciplina;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEmenta() {
return ementa;
}
public void setEmenta(String ementa) {
this.ementa = ementa;
}
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name = "idCurso")
public Curso getCurso() {
return curso;
}
public void setCurso(Curso curso) {
this.curso = curso;
}
@OneToMany(mappedBy = "Pessoa")
@OrderBy("idTurma")
public List getTurmas() {
return turmas;
}
public void setTurmas(List turmas) {
this.turmas = turmas;
}
}
Classe endereço
package exemplo.modelo;
/**
*
-
@author Ricardo
*/
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.OneToOne;
import javax.persistence.CascadeType;
import javax.persistence.PrimaryKeyJoinColumn;
@Entity
public class Endereco implements Serializable {
private Long idEndereco;
private String logradouro;
private Integer numero;
private String complemento;
private String bairro;
private String cidade;
private Integer cep;
private String estado;
private Pessoa pessoa;
public Endereco() {
}
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
public Long getIdEndereco() {
return idEndereco;
}
public void setIdEndereco(Long idEndereco) {
this.idEndereco = idEndereco;
}
public String getLogradouro() {
return logradouro;
}
public void setLogradouro(String logradouro) {
this.logradouro = logradouro;
}
public Integer getNumero() {
return numero;
}
public void setNumero(Integer numero) {
this.numero = numero;
}
public String getComplemento() {
return complemento;
}
public void setComplemento(String complemento) {
this.complemento = complemento;
}
public String getBairro() {
return bairro;
}
public void setBairro(String bairro) {
this.bairro = bairro;
}
public String getCidade() {
return cidade;
}
public void setCidade(String cidade) {
this.cidade = cidade;
}
public Integer getCep() {
return cep;
}
public void setCep(Integer cep) {
this.cep = cep;
}
public String getEstado() {
return estado;
}
public void setEstado(String estado) {
this.estado = estado;
}
@OneToOne(cascade = CascadeType.ALL)
@PrimaryKeyJoinColumn
public Pessoa getPessoa() {
return pessoa;
}
public void setPessoa(Pessoa pessoa) {
this.pessoa = pessoa;
}
}
Classe pessoa
package exemplo.modelo;
/**
*
-
@author Ricardo
*/
import java.io.Serializable;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.OneToOne;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
import javax.persistence.CascadeType;
import javax.persistence.PrimaryKeyJoinColumn;
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class Pessoa implements Serializable {
private Long idPessoa;
private String nome;
private String email;
private Endereco endereco;
private List telefones;
public Pessoa() {
}
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
public Long getIdPessoa() {
return idPessoa;
}
public void setIdPessoa(Long idPessoa) {
this.idPessoa = idPessoa;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@OneToOne(cascade = CascadeType.ALL)
@PrimaryKeyJoinColumn
public Endereco getEndereco() {
return endereco;
}
public void setEndereco(Endereco endereco) {
this.endereco = endereco;
}
@OneToMany(mappedBy = "Pessoa")
@OrderBy("idTelefone")
public List getTelefones() {
return telefones;
}
public void setTelefones(List telefones) {
this.telefones = telefones;
}
}
Classe professor
package exemplo.modelo;
/**
*
-
@author Ricardo
*/
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
@Entity
@PrimaryKeyJoinColumn(name = “idPessoa”)
public class Professor extends Pessoa {
private String titulo;
private List turmas;
public Professor() {
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
@OneToMany(mappedBy = "Professor")
@OrderBy("idTurma")
public List getTurmas() {
return turmas;
}
public void setTurmas(List turmas) {
this.turmas = turmas;
}
}
Classe telefone
package exemplo.modelo;
/**
*
-
@author Ricardo
*/
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
@Entity
@PrimaryKeyJoinColumn(name = “idPessoa”)
public class Professor extends Pessoa {
private String titulo;
private List turmas;
public Professor() {
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
@OneToMany(mappedBy = "Professor")
@OrderBy("idTurma")
public List getTurmas() {
return turmas;
}
public void setTurmas(List turmas) {
this.turmas = turmas;
}
}
Classe turma
package exemplo.modelo;
/**
*
-
@author Ricardo
*/
import java.io.Serializable;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.ManyToOne;
import javax.persistence.ManyToMany;
import javax.persistence.JoinColumn;
import javax.persistence.CascadeType;
@Entity
public class Turma implements Serializable {
private Long idTurma;
private String nome;
private Disciplina disciplina;
private Professor professor;
private List alunos;
public Turma() {
}
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
public Long getIdTurma() {
return idTurma;
}
public void setIdTurma(Long idTurma) {
this.idTurma = idTurma;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name = "idDisciplina")
public Disciplina getDisciplina() {
return disciplina;
}
public void setDisciplina(Disciplina disciplina) {
this.disciplina = disciplina;
}
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name = "idPessoa")
public Professor getProfessor() {
return professor;
}
public void setProfessor(Professor professor) {
this.professor = professor;
}
@ManyToMany(mappedBy = "Turma")
public List getAlunos() {
return alunos;
}
public void setAlunos(List alunos) {
this.alunos = alunos;
}
}
Classe gerartabela
package exemplo.modelo;
/**
*
-
@author Ricardo
*/
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.HibernateException;
import org.hibernate.tool.hbm2ddl.SchemaExport;
public class GerarTabelas {
public static void main(String[] args) {
try {
AnnotationConfiguration cfg = new AnnotationConfiguration();
cfg.addAnnotatedClass(Aluno.class)
.addAnnotatedClass(Curso.class)
.addAnnotatedClass(Disciplina.class)
.addAnnotatedClass(Endereco.class)
.addAnnotatedClass(Pessoa.class)
.addAnnotatedClass(Professor.class)
.addAnnotatedClass(Telefone.class)
.addAnnotatedClass(Turma.class);
cfg.addResource("hibernate.properties");
SchemaExport export = new SchemaExport(cfg);
export.create(true,true);
} catch(HibernateException e) {
e.printStackTrace();
}
}
}
Será que eu fiz alguma anotação errada ??? Ou ta faltando colocar alguma coisa para poder gerar as tabelas no MySQL,