Erro no mapeamento do hibernate

18 respostas
mirrah

Bom gente estou estudando o hibernate pelas video aulas do neri, e não estou conseguindo executar um aplicativo com o framework hibernate. Sempre que eu rodo o simples aplicativo, o eclipse me fala que tem um erro no mapeamento da classe aluno, mas já vi e revi o xml, e não encontro nenhum erro, será que alguém pode me ajudar a encontrar?

aluno bean:
public class Aluno 
{

	private int alu_codigo;
	private String nome;
	private String cidade;
	private String fone;
	private String curso;
	
	public Aluno()
	{
		
	}

	public int getAlu_codigo() {
		return alu_codigo;
	}

	public void setAlu_codigo(int alu_codigo) {
		this.alu_codigo = alu_codigo;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getCidade() {
		return cidade;
	}

	public void setCidade(String cidade) {
		this.cidade = cidade;
	}

	public String getFone() {
		return fone;
	}

	public void setFone(String fone) {
		this.fone = fone;
	}

	public String getCurso() {
		return curso;
	}

	public void setCurso(String curso) {
		this.curso = curso;
	}

	
	
}
aluno mapping:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mappring PUBLIC 
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
  <class name="Aluno" table="aluno">
    <id name="alu_codigo" column="alu_codigo" type="int"/>
    <property name="nome"/>
    <property name="cidade"/>
    <property name="fone"/>
    <property name="curso"/>
  </class>
</hibernate-mapping>
Configuração do hibernate:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-configuration PUBLIC 
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
  <session-factory>
    <property name="hibernate.connection.driver_class">
      com.mysql.jdbc.Driver
    </property>
    <property name="hibernate.connection.url">
      jdbc:mysql://localhost/javaHibernate
    </property>
    <property name="hibernate.connection.username">
      root
    </property>
    <property name="hibernate.connection.password>
      25quadrado
    </property>
    <property name="hibernate.dialect">
      org.hibernate.dialect.MySQLDialect
    </property>
    <mapping resource="aluno.hbn.xml" />
  </session-factory>
</hibernate-configuration>
e a classe principal do projetinho:
import javax.swing.JOptionPane;

import org.hibernate.*;
import org.hibernate.cfg.*;

public class GravaAluno {

	public static void main(String[] args) 
	{
		
		try
		{
			//inicia uma configuração nova para uma sessão
			SessionFactory fabrica = new Configuration().configure().buildSessionFactory();
			//abre uma nova sessão com o banco de dados, ou seja, se conecta com o banco de dados
			Session sessao = fabrica.openSession();
			Aluno aluno = new Aluno();
			aluno.setAlu_codigo(1);
			aluno.setNome("Rafael dos Santos Oliveira");
			aluno.setCurso("informatica");
			aluno.setFone("258899665");
			aluno.setCidade("Rio de Janeiro");
			/*inicia uma transsação, ou seja, ele vai executar tudo isso acima
			 * */
			Transaction tx_aluno = sessao.beginTransaction();
			sessao.save(aluno);
			//salva "fisicamente no banco de dados"
			tx_aluno.commit();
			sessao.close();
		}
		catch(Exception e)
		{
			JOptionPane.showMessageDialog(null, "Erro na sessão!" + e);
		}

	}

}

Desde já muitíssimo grato :)

18 Respostas

Tenkara_Kiddo

Olá Mirrah, tdo bem?
pelo que eu vi aqui você não anotou a sua entidade com as anotações necessárias, vou dar um exemplo

@Entity(name="o nome da entidade no BD")
public class Aluno   
{  
    @ID @GeneratedValue //geradores de valores para PK, verifique na documentação do Hibernate para saber mais
    private int alu_codigo;  
    @Column() //Se vc quiser pode anotar com @Column para especificar a sua coluna olhe a documentação do Hibernate para saber mais
    private String nome;  
    private String cidade;  
    private String fone;  
    private String curso;

espero ter ajudado

[]'s

drsmachado

Tenkara Kiddo:
Olá Mirrah, tdo bem?
pelo que eu vi aqui você não anotou a sua entidade com as anotações necessárias, vou dar um exemplo

@Entity(name="o nome da entidade no BD")
public class Aluno   
{  
    @ID @GeneratedValue //geradores de valores para PK, verifique na documentação do Hibernate para saber mais
    private int alu_codigo;  
    @Column() //Se vc quiser pode anotar com @Column para especificar a sua coluna olhe a documentação do Hibernate para saber mais
    private String nome;  
    private String cidade;  
    private String fone;  
    private String curso;

espero ter ajudado

[]'s

Ela está mapeando por XML, as anotações são dispensáveis, neste caso…

Qual o erro que o eclipse acusa?

mirrah

cara, não dá para eu ver isso agora mas em resumo fala que o o name do property não pode ter o ‘<’ ou alguma coisa parecida com isso

drsmachado

Vou dar uma olhada

I
<property name="hibernate.connection.password>

esse trecho de código, está faltando um fechar aspas ao final da declaração da propriedade, assim

<property name="hibernate.connection.password">

Verifica ai se é isso.

drsmachado

O erro está na falta das aspas para fechar o name da property password

//aqui, vê????
<property name="hibernate.connection.password> 
//é só fechar que roda
Tenkara_Kiddo

drsmachado:
Tenkara Kiddo:
Olá Mirrah, tdo bem?
pelo que eu vi aqui você não anotou a sua entidade com as anotações necessárias, vou dar um exemplo

@Entity(name="o nome da entidade no BD")
public class Aluno   
{  
    @ID @GeneratedValue //geradores de valores para PK, verifique na documentação do Hibernate para saber mais
    private int alu_codigo;  
    @Column() //Se vc quiser pode anotar com @Column para especificar a sua coluna olhe a documentação do Hibernate para saber mais
    private String nome;  
    private String cidade;  
    private String fone;  
    private String curso;

espero ter ajudado

[]'s

Ela está mapeando por XML, as anotações são dispensáveis, neste caso…

Qual o erro que o eclipse acusa?

legal cara eu não manjava, valeu

drsmachado

Eu ainda lembro as primeiras aulas de hibernate, tudo por xml…
Coisa do DEABO, pra quem não manja…
Com annotation, você perde um pouco do charme da coisa, masssssss, fica muito mais fácil…

Claro, é bem melhor conhecer os dois (no projeto anterior, aqui na empresa, tive que usar xml…)

mirrah

pow gente, eu sabia que o annotations existia, mas não sabia que era tão facil assim

drsmachado

Comparado ao XML, é sim…
Confunde um pouco no começo, mas quando você aprende a usar e se acostuma…
É uma facilidade que só…

Tenkara_Kiddo

é que acaba centralizando as configurações, no caso das anotações com 50 classes de modelo as 50 classes tem anotações, no caso do XML acaba centralizando tudo.

drsmachado

Não acho que XML centralize, afinal, cada entity terá, ainda, um hbm.xml…

Tenkara_Kiddo

saquei, deve ser bem hardcore mesmo colocar tudo em um hbm.xml

drsmachado

No projeto anterior, apenas umas 100 entities…
São 100 hbm.xml…

mirrah

bom gente, eu corrigi o erro de digitação, mas apareceu um outro erro:

será que tem alguma incompatibilidade com a tabela no banco de dados?

create table aluno( codigo int primary key, nome varchar(20), cidade varchar(20), telefone varchar(16), curso varchar(30) );

abraços a todos

drsmachado

O melhor é refazer o documento todo.
Os erros de parse são lançados quando o documento não está bem formatado, falta tag abrindo, fechando, sobre caractere, etc…

mirrah

pow cara, enão estou começando a ficar meio confuso, pois na aula do neri, o documento que eu escrevi é uma copia escarrada do documento dele.

R

http://docs.jboss.org/hibernate/core/3.6/quickstart/en-US/html_single/

dá uma olhada ai e na parte 2 tem um zip dos tutoriais, qualquer dúvida posta ai ok.

Criado 1 de junho de 2011
Ultima resposta 1 de jun. de 2011
Respostas 18
Participantes 5