Mapeamento das Classes (Hibernate)

2 respostas
N

Olá pessoal, estou executando um pequeno teste usando Hibernate, ainda sou iniciante.

Classe Usuario:

public class Usuario {
	private String usCod;
	private String usSenha;
	private String usNome;
	private String usEmail;

	public Usuario(){
	}

	public Usuario(String usCod, String usSenha, String usNome, String usEmail) {
		this.setUsCod(usCod);
		this.setUsSenha(usSenha);
		this.setUsNome(usNome);
		this.setUsEmail(usEmail);
	}

    private void setUsCod(String usCod) {
        this.usCod = usCod;
    }

    private void setUsSenha(String usSenha) {
        this.usSenha = usSenha;
    }

    private void setUsNome(String usNome) {
        this.usNome = usNome;
    }

    private void setUsEmail(String usEmail) {
        this.usEmail = usEmail;
    }



}

Classe UsuarioDAO:

import java.util.List;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import org.hibernate.criterion.Expression;

public class UsuarioDAO{

	private SessionFactory factory;

	public UsuarioDAO() throws Exception{
		factory = new Configuration().addClass(Usuario.class).buildSessionFactory();

	}

	public void UsInserir(Usuario us) throws Exception {
		Session session = factory.openSession();
		session.save(us);
		session.flush();
		session.close();
	}

	public void UsAlterar(Usuario us) throws Exception {
		Session session = factory.openSession();
		session.update(us);
		session.flush();
		session.close();
	}
	public void UsExcluir(Usuario us) throws Exception {
		Session session = factory.openSession();
		session.delete(us);
		session.flush();
		session.close();
	}
}

Classe Teste(Main)

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Joao
 */
public class Teste {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws Exception {

	try
	{
		String log = "login";
		String senha = "abc";
		String nome = "Rafael";
		String email = "[email removido]";

		UsuarioDAO dao = new UsuarioDAO();
		Usuario usuario = new Usuario(log,senha,nome,email);
		dao.UsInserir(usuario);
		System.out.println("Registro inserido com sucesso!!!");
		}
		catch(Exception e)
		{
			System.out.println("Não foi possivel, Erro: " + e.getMessage());
		}
	}


}

Mapeamento:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"">

<hibernate-mapping>
   <class name="Usuario" table="Usuario">
       <id name="UsCod"  column="USCOD"  type="string">
            < generator class="assigned"/>
        </id>
        <property name="UsSenha" column="USSENHA" type="string"/>
        <property name="UsNome" column="USNOME" type="string"/>
        <property name="UsEmail" column="USEMAIL" type="string"/>
    </class>
</hibernate-mapping>

Erro

01:08:50,453  INFO Environment:560 - Hibernate 3.3.2.GA
01:08:50,453  INFO Environment:578 - loaded properties from resource hibernate.properties: {hibernate.bytecode.use_reflection_optimizer=false}
01:08:50,468  INFO Environment:771 - Bytecode provider name : javassist
01:08:50,468  INFO Environment:652 - using JDK 1.4 java.sql.Timestamp handling
01:08:50,546  INFO Configuration:632 - Reading mappings from resource: Usuario.hbm.xml
01:08:50,546  INFO Configuration:577 - Reading mappings from resource: Usuario.hbm.xml
01:12:36,921 ERROR XMLHelper:81 - Error parsing XML: XML InputStream(3) The document type declaration for root element type "hibernate-mapping" must end with '>'.
Não foi possivel, Erro: Could not parse mapping document from resource Usuario.hbm.xml
CONSTRUÍDO COM SUCESSO (tempo total: 2 segundos)

Acredito que o problema esteja mesmo em mapear a classe, achei que fosse o problema com o arquivo “hibernate-mapping-3.0.dtd” então substitui por “http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd”" mas o erro se manteve. Vi algumas informações em outros topicos sobre erros parecidos mas nada que mudei concertou. Alguem pode ajudar?

2 Respostas

Andre_Brito

Você não pode usar mapeamento por Annotations?
Será que não pode ser o espaço que você usa no generator (id)?

fnandos

Tem uma aspas a mais nessa linha esta assim no seu hbm ou foi so erro na hora de postar no forum?

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

No resto não vejo problemas

Criado 7 de dezembro de 2009
Ultima resposta 7 de dez. de 2009
Respostas 2
Participantes 3