Org.hibernate.MappingException: Unknown entity: vo.Empresa

Fala galera…
to tendo esse problema e to fuçando pra ver se encontro alguma solução…aparentemente ao meu ver está tudo correto…
to seguindo um tutorial sobre Hibernate e implementando com alguns codigos.
me deparei com esse problema de mapping do Hibernate

tenho essa classe main

import org.hibernate.Session;
import vo.Empresa;

 public class main {
     public static void main(String[] args) {
         HibernateUtil util = new HibernateUtil();
         Session session = util.getSession();
         Empresa a = new Empresa();
         a.setNmFantasia("jose");
         session.beginTransaction();
         session.save(a); 
         session.getTransaction().commit(); 
         System.out.println(a.getIdEmpresa());

         
     }
 }

o stack trace e as info do hibernate que a classe gera…

28/09/2010 23:13:33 org.hibernate.cfg.annotations.Version <clinit>
INFO: Hibernate Annotations 3.3.1.GA
28/09/2010 23:13:33 org.hibernate.cfg.Environment <clinit>
INFO: Hibernate 3.2.5
28/09/2010 23:13:33 org.hibernate.cfg.Environment <clinit>
INFO: hibernate.properties not found
28/09/2010 23:13:33 org.hibernate.cfg.Environment buildBytecodeProvider
INFO: Bytecode provider name : cglib
28/09/2010 23:13:33 org.hibernate.cfg.Environment <clinit>
INFO: using JDK 1.4 java.sql.Timestamp handling
28/09/2010 23:13:33 org.hibernate.cfg.Configuration configure
INFO: configuring from resource: /hibernate.cfg.xml
28/09/2010 23:13:33 org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: Configuration resource: /hibernate.cfg.xml
28/09/2010 23:13:33 org.hibernate.cfg.Configuration addResource
INFO: Reading mappings from resource : hibernate.cfg.xml
28/09/2010 23:13:33 org.hibernate.cfg.Configuration doConfigure
INFO: Configured SessionFactory: null
28/09/2010 23:13:34 org.hibernate.cfg.AnnotationConfiguration secondPassCompile
INFO: Hibernate Validator not found: ignoring
28/09/2010 23:13:34 org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: Using Hibernate built-in connection pool (not for production use!)
28/09/2010 23:13:34 org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: Hibernate connection pool size: 20
28/09/2010 23:13:34 org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: autocommit mode: false
28/09/2010 23:13:34 org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: using driver: oracle.jdbc.driver.OracleDriver at URL: jdbc:oracle:thin:@127.0.0.1:1521:XE
28/09/2010 23:13:34 org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: connection properties: {user=Desenvolvedor, password=****}
28/09/2010 23:13:34 org.hibernate.cfg.SettingsFactory buildSettings
INFO: RDBMS: Oracle, version: Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
28/09/2010 23:13:34 org.hibernate.cfg.SettingsFactory buildSettings
INFO: JDBC driver: Oracle JDBC driver, version: 10.2.0.1.0XE
28/09/2010 23:13:34 org.hibernate.dialect.Dialect <init>
INFO: Using dialect: org.hibernate.dialect.Oracle9Dialect
28/09/2010 23:13:35 org.hibernate.dialect.Oracle9Dialect <init>
WARNING: The Oracle9Dialect dialect has been deprecated; use either Oracle9iDialect or Oracle10gDialect instead
28/09/2010 23:13:35 org.hibernate.transaction.TransactionFactoryFactory buildTransactionFactory
INFO: Using default transaction strategy (direct JDBC transactions)
28/09/2010 23:13:35 org.hibernate.transaction.TransactionManagerLookupFactory getTransactionManagerLookup
INFO: No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
28/09/2010 23:13:35 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Automatic flush during beforeCompletion(): disabled
28/09/2010 23:13:35 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Automatic session close at end of transaction: disabled
28/09/2010 23:13:35 org.hibernate.cfg.SettingsFactory buildSettings
INFO: JDBC batch size: 15
28/09/2010 23:13:35 org.hibernate.cfg.SettingsFactory buildSettings
INFO: JDBC batch updates for versioned data: disabled
28/09/2010 23:13:35 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Scrollable result sets: enabled
28/09/2010 23:13:35 org.hibernate.cfg.SettingsFactory buildSettings
INFO: JDBC3 getGeneratedKeys(): disabled
28/09/2010 23:13:35 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Connection release mode: auto
28/09/2010 23:13:35 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Default batch fetch size: 1
28/09/2010 23:13:35 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Generate SQL with comments: disabled
28/09/2010 23:13:35 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Order SQL updates by primary key: disabled
28/09/2010 23:13:35 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Order SQL inserts for batching: disabled
28/09/2010 23:13:35 org.hibernate.cfg.SettingsFactory createQueryTranslatorFactory
INFO: Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
28/09/2010 23:13:35 org.hibernate.hql.ast.ASTQueryTranslatorFactory <init>
INFO: Using ASTQueryTranslatorFactory
28/09/2010 23:13:35 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Query language substitutions: {}
28/09/2010 23:13:35 org.hibernate.cfg.SettingsFactory buildSettings
INFO: JPA-QL strict compliance: disabled
28/09/2010 23:13:35 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Second-level cache: enabled
28/09/2010 23:13:35 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Query cache: disabled
28/09/2010 23:13:35 org.hibernate.cfg.SettingsFactory createCacheProvider
INFO: Cache provider: org.hibernate.cache.NoCacheProvider
28/09/2010 23:13:35 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Optimize cache for minimal puts: disabled
28/09/2010 23:13:35 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Structured second-level cache entries: disabled
28/09/2010 23:13:35 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Echoing all SQL to stdout
28/09/2010 23:13:35 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Statistics: disabled
28/09/2010 23:13:35 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Deleted entity synthetic identifier rollback: disabled
28/09/2010 23:13:35 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Default entity-mode: pojo
28/09/2010 23:13:35 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Named query checking : enabled
28/09/2010 23:13:35 org.hibernate.impl.SessionFactoryImpl <init>
INFO: building session factory
28/09/2010 23:13:35 org.hibernate.impl.SessionFactoryObjectFactory addInstance
INFO: Not binding factory to JNDI, no JNDI name configured
Exception in thread "main" org.hibernate.MappingException: Unknown entity: vo.Empresa
        at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:550)
        at org.hibernate.impl.SessionImpl.getEntityPersister(SessionImpl.java:1338)
        at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:98)
        at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
        at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
        at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
        at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
        at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
        at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
        at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
        at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
        at main.main(main.java:21)

vou postar aqui o hibernate.cfg.xml,o HibernateUtil e o bean Empresa do meu projeto tambem…

hibernate.cfg.xml

<?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.dialect">org.hibernate.dialect.OracleDialect</property>
    <property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property>
    <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521/XE</property>
    <property name="hibernate.connection.username">Desenvolvedor</property>
    <property name="hibernate.connection.password">root</property>
    <mapping class="vo.Cliente"/>
    <mapping class="vo.Empresa"/>
  </session-factory>
</hibernate-configuration>

HibernateUtil


public class HibernateUtil {

     private final SessionFactory sessionFactory;

     public HibernateUtil () {
         try {
             this.sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
         } catch (Throwable ex) {
             throw new ExceptionInInitializerError(ex);
         }
     }

     public Session getSession() throws HibernateException {
         return this.sessionFactory.openSession();
     }

}

Empresa.java

package vo;

import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table(name="EMPRESA"
    ,schema="DESENVOLVEDOR"
)
public class Empresa {



     private int idEmpresa;
     private String nmFantasia;
     private long nuCnpj;
     private String nmRazaoSocial;
     private String nmAtividadePrincipal;
     private BigDecimal nuFaturamentoAnual;
     private BigDecimal nuFuncionario;
     private String nmEndereco;
     private String nmBairro;
     private int nuCep;
     private long nmInscricaoEstadual;
     private String nmHomePage;
     private String nmDescricao;
     private Short tpAreaAtuacao;
     private Date dtCriacao;

   
    @Id
    @SequenceGenerator(initialValue=1, name="ID_EMPRESA", sequenceName="SEQ_EMPRESA")
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="ID_EMPRESA")
    @Column(name="ID_EMPRESA", unique=true, nullable=false, precision=6, scale=0)
    public int getIdEmpresa() {
        return this.idEmpresa;
    }
    
    public void setIdEmpresa(int idEmpresa) {
        this.idEmpresa = idEmpresa;
    }
    
    @Column(name="NM_FANTASIA", nullable=false, length=250)
    public String getNmFantasia() {
        return this.nmFantasia;
    }
    
    public void setNmFantasia(String nmFantasia) {
        this.nmFantasia = nmFantasia;
    }
    
    //get's e set's vão aqui...
}

o engracado é… esse meu projeto funciona em um netbeans instalado no computador de um colega meu… porem comigo nao rola…

Olá!
Tente com esta configuração no seu HibernateUtil:

public class HibernateUtil {

	private static SessionFactory factory;

	static {
		AnnotationConfiguration cfg = new AnnotationConfiguration();
		cfg.addAnnotatedClass(Empresa.class);
		factory = cfg.buildSessionFactory();
	}

	public Session getSession() {
		return factory.openSession();
	}
}

[]s

opa… então Guevara

se eu colocar o HibernateUtil do jeito que você disse ele me apresenta o seguinte stack trace:

Exception in thread "main" java.lang.ExceptionInInitializerError
        at main.main(main.java:15)
Caused by: org.hibernate.HibernateException: Hibernate Dialect must be explicitly set
        at org.hibernate.dialect.DialectFactory.determineDialect(DialectFactory.java:57)
        at org.hibernate.dialect.DialectFactory.buildDialect(DialectFactory.java:39)
        at org.hibernate.cfg.SettingsFactory.determineDialect(SettingsFactory.java:426)
        at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:128)
        at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)
        at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
        at HibernateUtil.<clinit>(HibernateUtil.java:24)
        ... 1 more

a impressão que eu tenho é que ele não ta lendo o hibernate.cfg.xml corretamente.

Sem problemas, use este xml:

<!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="connection.url">jdbc:postgresql://localhost/meuprojeto</property>
		<property name="connection.driver_class">org.postgresql.Driver</property>
		<property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>	
		<property name="connection.username">postgres</property>
		<property name="connection.password">123456</property>				
		<property name="connection.pool_size">1</property>
		<property name="current_session_context_class">thread</property>
		<property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
		<property name="hibernate.show_sql">true</property>
		<property name="hibernate.format_sql">true</property>
		<property name="hibernate.hbm2ddl.auto">update</property>
		<mapping class="br.com.meuprojeto.bean.MinhaClasse"/>		
		<mapping class="br.com.meuprojeto.bean.MinhaOutraClasse"/>					
	</session-factory>
</hibernate-configuration>

Substitua o que precisar, o banco, as classes, a senha e usuario.
[]s

não deu certo…

coloquei esse xml e alterei meu banco…ele continuou com o mesmo erro…

Se o erro é com o dialeto, então faltou vc alterar aquela linha lá:

hibernate.dialect org.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class com.mysql.jdbc.Driver
hibernate.connection.url jdbc:mysql://localhost/meuprojeto

Se for MySQL é isso ai. Colocou o jar do mysql dentro da sua /lib ?

Eu uso o Oracle 10g XE

ficou assim olha:


         <property name="connection.url">jdbc:oracle:thin:@localhost:1521/XE</property>
         <property name="connection.driver_class">oracle.jdbc.OracleDriver</property>
         <property name="dialect">org.hibernate.dialect.OracleDialect</property>

Putz, foi mal, confundi com o outro tópico que está abaixo do seu q é MySQL.
Deixa assim então:

hibernate.dialect org.hibernate.dialect.Oracle10gDialect
hibernate.connection.driver_class oracle.jdbc.driver.OracleDriver
hibernate.connection.url jdbc:oracle:thin:@localhost:1522:XE

Se for versão 10g é isso ai, se for 8 ou 9, é assim:

hibernate.dialect org.hibernate.dialect.Oracle8iDialect
hibernate.dialect org.hibernate.dialect.Oracle9iDialect

é a 10g… eu só me pergunto porque em um netbeans ele funciona corretamente e no outro não…

alguma configuração errada?
permissão de usuario? lembrando que funciona no 32 bits e no 64 nao…

usei o hibernate tools nesse netbeans de 64 bits e tambem não funcionou…
xDD