Erro ao abrir sessão no hibernate

2 respostas
ctrlaltleo

Boa noite pessoal, estou testando abertura de sessão no hibernate e está
dando esse erro (lista 1) executando teste.java(lista 2) que instancia um
objeto de hibernateutulity(lista 3)

ps: vendedor é uma jbean normal com tags xdoclet

lista 1

(cfg.Environment                     514 ) Hibernate 3.2.4
(cfg.Environment                     532 ) loaded properties from resource hibernate.properties: {hibernate.connection.username=root, hibernate.connection.password=****, hibernate.dialect=org.hibernate.dialect.MySQLDialect, hibernate.connection.url=jdbc:mysql://localhost/rr_lesson_1, hibernate.bytecode.use_reflection_optimizer=false, hibernate.connection.driver_class=com.mysql.jdbc.Driver}
(cfg.Environment                     681 ) Bytecode provider name : cglib
(cfg.Environment                     598 ) using JDK 1.4 java.sql.Timestamp handling
(cfg.Configuration                   1426) configuring from resource: /hibernate.cfg.xml
(cfg.Configuration                   1403) Configuration resource: /hibernate.cfg.xml
(cfg.Configuration                   553 ) Reading mappings from resource : ../../WEB-INF/classes/net/reumann/Chamada.hbm.xml
(cfg.HbmBinder                       300 ) Mapping class: Chamada -> Chamada
(cfg.Configuration                   553 ) Reading mappings from resource : ../../WEB-INF/classes/net/reumann/Cliente.hbm.xml
(cfg.HbmBinder                       300 ) Mapping class: Cliente -> Cliente
(cfg.Configuration                   553 ) Reading mappings from resource : ../../WEB-INF/classes/net/reumann/Contrato.hbm.xml
(cfg.HbmBinder                       300 ) Mapping class: Contrato -> Contrato
(cfg.Configuration                   553 ) Reading mappings from resource : ../../WEB-INF/classes/net/reumann/Cota.hbm.xml
(cfg.HbmBinder                       300 ) Mapping class: Cota -> Cota
(cfg.Configuration                   553 ) Reading mappings from resource : ../../WEB-INF/classes/net/reumann/Equipamento.hbm.xml
(cfg.HbmBinder                       300 ) Mapping class: Equipamento -> Equipamento
(cfg.Configuration                   553 ) Reading mappings from resource : ../../WEB-INF/classes/net/reumann/Supervisor.hbm.xml
(cfg.HbmBinder                       300 ) Mapping class: Supervisor -> Supervisor
(cfg.Configuration                   553 ) Reading mappings from resource : ../../WEB-INF/classes/net/reumann/Tipo.hbm.xml
(cfg.HbmBinder                       300 ) Mapping class: Tipo -> Tipo
(cfg.Configuration                   553 ) Reading mappings from resource : ../../WEB-INF/classes/net/reumann/Vendedor.hbm.xml
(cfg.HbmBinder                       300 ) Mapping class: Vendedor -> Vendedor
(cfg.Configuration                   1541) Configured SessionFactory: null
(cfg.HbmBinder                       2385) Mapping collection: Cliente.contratos -> Contrato
(cfg.HbmBinder                       2385) Mapping collection: Contrato.cotas -> Cota
(cfg.HbmBinder                       2385) Mapping collection: Contrato.equipamentos -> Equipamento
(cfg.HbmBinder                       2385) Mapping collection: Equipamento.chamadas -> Chamada
(cfg.HbmBinder                       2385) Mapping collection: Supervisor.chamadas -> Chamada
(cfg.HbmBinder                       2385) Mapping collection: Tipo.equipamentos -> Equipamento
(cfg.HbmBinder                       2385) Mapping collection: Vendedor.contratos -> Contrato
(connection.DriverManagerConnectionProvider 41  ) Using Hibernate built-in connection pool (not for production use!)
(connection.DriverManagerConnectionProvider 42  ) Hibernate connection pool size: 20
(connection.DriverManagerConnectionProvider 45  ) autocommit mode: false
(connection.DriverManagerConnectionProvider 80  ) using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://localhost/rr_lesson_1
(connection.DriverManagerConnectionProvider 86  ) connection properties: {user=root, password=****}
(cfg.SettingsFactory                 89  ) RDBMS: MySQL, version: 4.0.20a-nt
(cfg.SettingsFactory                 90  ) JDBC driver: Mark Matthews' MySQL Driver, version: 2.0.14
(dialect.Dialect                     152 ) Using dialect: org.hibernate.dialect.MySQLDialect
(transaction.TransactionFactoryFactory 31  ) Using default transaction strategy (direct JDBC transactions)
(transaction.TransactionManagerLookupFactory 33  ) No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
(cfg.SettingsFactory                 143 ) Automatic flush during beforeCompletion(): disabled
(cfg.SettingsFactory                 147 ) Automatic session close at end of transaction: disabled
(cfg.SettingsFactory                 154 ) JDBC batch size: 15
(cfg.SettingsFactory                 157 ) JDBC batch updates for versioned data: disabled
(cfg.SettingsFactory                 162 ) Scrollable result sets: enabled
(cfg.SettingsFactory                 170 ) JDBC3 getGeneratedKeys(): enabled
(cfg.SettingsFactory                 178 ) Connection release mode: auto
(cfg.SettingsFactory                 202 ) Maximum outer join fetch depth: 2
(cfg.SettingsFactory                 205 ) Default batch fetch size: 1
(cfg.SettingsFactory                 209 ) Generate SQL with comments: enabled
(cfg.SettingsFactory                 213 ) Order SQL updates by primary key: disabled
(cfg.SettingsFactory                 217 ) Order SQL inserts for batching: disabled
(cfg.SettingsFactory                 386 ) Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
(ast.ASTQueryTranslatorFactory       24  ) Using ASTQueryTranslatorFactory
(cfg.SettingsFactory                 225 ) Query language substitutions: {}
(cfg.SettingsFactory                 230 ) JPA-QL strict compliance: disabled
(cfg.SettingsFactory                 235 ) Second-level cache: enabled
(cfg.SettingsFactory                 239 ) Query cache: disabled
(cfg.SettingsFactory                 373 ) Cache provider: org.hibernate.cache.NoCacheProvider
(cfg.SettingsFactory                 254 ) Optimize cache for minimal puts: disabled
(cfg.SettingsFactory                 263 ) Structured second-level cache entries: disabled
(cfg.SettingsFactory                 283 ) Echoing all SQL to stdout
(cfg.SettingsFactory                 290 ) Statistics: enabled
(cfg.SettingsFactory                 294 ) Deleted entity synthetic identifier rollback: disabled
(cfg.SettingsFactory                 309 ) Default entity-mode: pojo
(cfg.SettingsFactory                 313 ) Named query checking : enabled
(impl.SessionFactoryImpl             161 ) building session factory
Exception in thread "main" java.lang.NoClassDefFoundError: Vendedor (wrong name: net/reumann/Vendedor)
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(Unknown Source)
	at java.security.SecureClassLoader.defineClass(Unknown Source)
	at java.net.URLClassLoader.defineClass(Unknown Source)
	at java.net.URLClassLoader.access$100(Unknown Source)
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClassInternal(Unknown Source)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Unknown Source)
	at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:100)
	at org.hibernate.mapping.PersistentClass.getMappedClass(PersistentClass.java:96)
	at org.hibernate.tuple.PropertyFactory.getGetter(PropertyFactory.java:168)
	at org.hibernate.tuple.PropertyFactory.buildIdentifierProperty(PropertyFactory.java:44)
	at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:123)
	at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:434)
	at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:109)
	at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55)
	at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:226)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1294)
	at net.reumann.HibernateUtility.<clinit>(HibernateUtility.java:23)
	at net.reumann.Teste.main(Teste.java:21)

lista 2

package net.reumann;

/*
 * Created on 23/05/2007 by Leonardo Santos
 TESTEMANUT1*
 * 
 */

/**
 * @author Léo
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
import org.hibernate.Session;
import org.hibernate.Transaction;

public class Teste {

	public static void main(String[] args) {
		Session sessao=HibernateUtility.getSession();
		/*Transaction transaction = sessao.beginTransaction();
		Supervisor s=new Supervisor();
		s.setCpf("1515744454745");
		s.setNome("Leonardo Feraos");
		s.setSenha("password");
		sessao.save(s);
		transaction.commit();*/
		sessao.close();
	}
}

lista 3

/*
 * Created on 23/05/2007 by Leonardo Santos
 TESTEMANUT1*
 * 
 */

/**
 * @author Léo
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package net.reumann;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtility {
	private static SessionFactory factory;
	static
	{
		try
		{
			factory=new Configuration().configure().buildSessionFactory();
		}catch(Exception e)
		{
			e.printStackTrace();
			factory=null;
		}
	}
	public static Session getSession()
	{
		return factory.openSession();
	}

}

2 Respostas

Jair_Rillo_Junior

Como o erro diz, ele não encontrou a classe Vendedor.
Essa classe existe mesmo?
Ela foi mapeada corretamente? (Eu acho que nesse ponto está o erro)
Dê uma verificada nos seus arquivos de configuração (pelo modo que você iniciou o SessionFactory, você deve estar utilizando o hibernate.cfg.xml).

Outra coisa, no seu exemplo, você está tentando persistir o objeto Supervisor, porém a exception lançada foi no objeto Vendedor, ou seja, o erro não está na classe Teste

ctrlaltleo
a Vendedor ta aqui! (lista 1) inclusive seu mapeamento(lista 2) usei mesmo o hibernate.cfg.xml(lista3) não sei o que está dando errado! lista 1
package net.reumann;

/*
 * Created on 29/05/2007 
 EqManut*
 * 
 */
import java.util.Set;
import java.io.Serializable;
/**
 * @author Leonardo Santos
 *
 *@hibernate.class
 */
public class Vendedor implements Serializable{
    private Integer numVendedor;
    /**
     * @hibernate.id generator-class="increment"
     */
    public Integer getNumVendedor() {
        return numVendedor;
    }
    /**
     * param numVendedor The numVendedor to set.
     */
    public void setNumVendedor(Integer numVendedor) {
        this.numVendedor = numVendedor;
    }
    private String cpf;
    private String nome;
    private String senha;
    private Set contratos;
    
    /**
     * @hibernate.set
     * lazy="true"
     * cascade="none"
     * inverse="true"
     * 
     * @hibernate.collection-one-to-many
     * class="Contrato"
     * 
     * @hibernate.collection-key
     * column="vendedor"
     */
    public Set getContratos() {
        return contratos;
    }
    /**
     * @hibernate.property unique="true" not-null="true" length="12"
     */
    public String getCpf() {
        return cpf;
    }
    /**
     * @hibernate.property length="25" unique="true"
     */
    public String getNome() {
        return nome;
    }
    /**
     * @hibernate.property length="15"
     */
    public String getSenha() {
        return senha;
    }
    /**
     * param contratos The contratos to set.
     */
    public void setContratos(Set contratos) {
        this.contratos = contratos;
    }
    /**
     * param cpf The cpf to set.
     */
    public void setCpf(String cpf) {
        this.cpf = cpf;
    }
    /**
     * param nome The nome to set.
     */
    public void setNome(String nome) {
        this.nome = nome;
    }
    /**
     * param senha The senha to set.
     */
    public void setSenha(String senha) {
        this.senha = senha;
    }
}
lista 2
<?xml version="1.0" encoding="UTF-8"?>

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

<hibernate-mapping
>
    <class
        name="Vendedor"
    >

        <id
            name="numVendedor"
            column="numVendedor"
            type="java.lang.Integer"
        >
            <generator class="increment">
              <!--  
                  To add non XDoclet generator parameters, create a file named 
                  hibernate-generator-params-Vendedor.xml 
                  containing the additional parameters and place it in your merge dir. 
              --> 
            </generator>
        </id>

        <set
            name="contratos"
            lazy="true"
            inverse="true"
            cascade="none"
            sort="unsorted"
        >

            <key
                column="vendedor"
            >
            </key>

            <one-to-many
                  class="Contrato"
            />

        </set>

        <property
            name="cpf"
            type="java.lang.String"
            update="true"
            insert="true"
            column="cpf"
            length="12"
            not-null="true"
            unique="true"
        />

        <property
            name="nome"
            type="java.lang.String"
            update="true"
            insert="true"
            column="nome"
            length="25"
            unique="true"
        />

        <property
            name="senha"
            type="java.lang.String"
            update="true"
            insert="true"
            column="senha"
            length="15"
        />

        <!--
            To add non XDoclet property mappings, create a file named
                hibernate-properties-Vendedor.xml
            containing the additional properties and place it in your merge dir.
        -->

    </class>

</hibernate-mapping>
lista3
<!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.dialect">
			org.hibernate.dialect.MySQLDialect
		</property>
		<property name="hibernate.connection.driver_class">
			com.mysql.jdbc.Driver
		</property>
		<property name="hibernate.connection.url">
			jdbc:mysql://localhost/rr_lesson_1
		</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password"></property>
		
		<property name="hibernate.hbm2ddl.auto">update</property>
	    <property name="show_sql">true</property>
	    <property name="hibernate.generate_statistics">true</property>
	    <property name="hibernate.use_sql_comments">true</property>
	    
	      <mapping resource="../../WEB-INF/classes/net/reumann/Chamada.hbm.xml"/>
		<mapping resource="../../WEB-INF/classes/net/reumann/Cliente.hbm.xml"/>
		<mapping resource="../../WEB-INF/classes/net/reumann/Contrato.hbm.xml"/>
		<mapping resource="../../WEB-INF/classes/net/reumann/Cota.hbm.xml"/>
		<mapping resource="../../WEB-INF/classes/net/reumann/Equipamento.hbm.xml"/>
		<mapping resource="../../WEB-INF/classes/net/reumann/Supervisor.hbm.xml"/>
		<mapping resource="../../WEB-INF/classes/net/reumann/Tipo.hbm.xml"/>
		<mapping resource="../../WEB-INF/classes/net/reumann/Vendedor.hbm.xml"/>
    </session-factory>

</hibernate-configuration>
Criado 12 de junho de 2007
Ultima resposta 12 de jun. de 2007
Respostas 2
Participantes 2