Hibernate annotations

2 respostas
Z

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,

2 Respostas

Paulo_Silveira

faltou voce chamar cfg.configure() depois de adicionar as classes. ai ele tenta procurar o hbm.xml.

K

use o code para digitar o código…
aponte as dificuldades em vez de copiar o código inteiro. assim, outros membros poderão te ajudar melhor

Criado 14 de abril de 2007
Ultima resposta 14 de abr. de 2007
Respostas 2
Participantes 3