Hibernate - Unknown entity

Lista,

tenho o arquivo hibernate.cfg.xml abaixo, porém recebo essa exception:
org.hibernate.MappingException: Unknown entity: entity.Empresa, sendo que entity.Empresa está definido.
Estou estudando hibernate com anottations

Alguém pode me ajudar?

Tks,

Marques

<!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">
			org.gjt.mm.mysql.Driver
		</property>
		<property name="hibernate.connection.password">
			lirio
		</property>
		<property name="hibernate.connection.url">
			jdbc:mysql://localhost/teste
		</property>
		<property name="hibernate.connection.username">
			urano199
		</property>
		<property name="hibernate.dialect">
			org.hibernate.dialect.MySQLDialect
		</property>
		<mapping class="entity.Empresa"/>
	</session-factory>
</hibernate-configuration>

Poste a sua entity.Empresa ae…

Poste o stack trace completo. Provavelmente há alguma outra exceção sendo lançada ao parsear o Empresa.hbm.xml.

package entity;

import java.io.Serializable;
import org.hibernate.annotations.Entity;
import javax.persistence.*;

@Entity
@Table(name = "empresa")
public class Empresa implements Serializable {

	private Integer idEmpresa;
	private String nomeFantasia;
	private String razaoSocial;
	private String codigoCnae;
	private String descrCnae;
	private String cnpj;
	private String grauRisco;
	private String ie;

	public Empresa() {
	}

	@Id
	@Column(name = "id_empresa")
	public Integer getIdEmpresa() {
		return idEmpresa;
	}

	public void setIdEmpresa(Integer idEmpresa) {
		this.idEmpresa = idEmpresa;
	}

	@Column(name = "cnpj")
	public String getCnpj() {
		return cnpj;
	}

	public void setCnpj(String cnpj) {
		this.cnpj = cnpj;
	}

	@Column(name = "codigo_cnae")
	public String getCodigoCnae() {
		return codigoCnae;
	}

	public void setCodigoCnae(String codigoCnae) {
		this.codigoCnae = codigoCnae;
	}

	@Column(name = "descr_cnae")
	public String getDescrCnae() {
		return descrCnae;
	}

	public void setDescrCnae(String descrCnae) {
		this.descrCnae = descrCnae;
	}

	@Column(name = "grau_risco")
	public String getGrauRisco() {
		return grauRisco;
	}

	public void setGrauRisco(String grauRisco) {
		this.grauRisco = grauRisco;
	}

	@Column(name = "ie")
	public String getIe() {
		return ie;
	}

	public void setIe(String ie) {
		this.ie = ie;
	}

	@Column(name = "nome_fantasia")
	public String getNomeFantasia() {
		return nomeFantasia;
	}

	public void setNomeFantasia(String nomeFantasia) {
		this.nomeFantasia = nomeFantasia;
	}

	@Column(name = "razao_social")
	public String getRazaoSocial() {
		return razaoSocial;
	}

	public void setRazaoSocial(String razaoSocial) {
		this.razaoSocial = razaoSocial;
	}
}
04/12/2006 11:17:43 org.hibernate.cfg.annotations.Version <clinit>
INFO: Hibernate Annotations 3.2.0.GA
04/12/2006 11:17:43 org.hibernate.cfg.Environment <clinit>
INFO: Hibernate 3.2.1
04/12/2006 11:17:43 org.hibernate.cfg.Environment <clinit>
INFO: hibernate.properties not found
04/12/2006 11:17:43 org.hibernate.cfg.Environment buildBytecodeProvider
INFO: Bytecode provider name : cglib
04/12/2006 11:17:43 org.hibernate.cfg.Environment <clinit>
INFO: using JDK 1.4 java.sql.Timestamp handling
04/12/2006 11:17:43 org.hibernate.cfg.Configuration configure
INFO: configuring from resource: hibernate.cfg.xml
04/12/2006 11:17:43 org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: Configuration resource: hibernate.cfg.xml
04/12/2006 11:17:43 org.hibernate.cfg.Configuration doConfigure
INFO: Configured SessionFactory: null
04/12/2006 11:17:43 org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: Using Hibernate built-in connection pool (not for production use!)
04/12/2006 11:17:43 org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: Hibernate connection pool size: 20
04/12/2006 11:17:43 org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: autocommit mode: false
04/12/2006 11:17:43 org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: using driver: org.gjt.mm.mysql.Driver at URL: jdbc:mysql://localhost/urano199
04/12/2006 11:17:43 org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: connection properties: {user=urano199, password=****}
04/12/2006 11:17:44 org.hibernate.cfg.SettingsFactory buildSettings
INFO: RDBMS: MySQL, version: 4.1.12a-nt
04/12/2006 11:17:44 org.hibernate.cfg.SettingsFactory buildSettings
INFO: JDBC driver: MySQL-AB JDBC Driver, version: mysql-connector-java-3.1.11 ( $Date: 2005-09-21 18:20:03 +0000 (Wed, 21 Sep 2005) $, $Revision: 4287 $ )
04/12/2006 11:17:44 org.hibernate.dialect.Dialect <init>
INFO: Using dialect: org.hibernate.dialect.MySQLDialect
04/12/2006 11:17:44 org.hibernate.transaction.TransactionFactoryFactory buildTransactionFactory
INFO: Using default transaction strategy (direct JDBC transactions)
04/12/2006 11:17:44 org.hibernate.transaction.TransactionManagerLookupFactory getTransactionManagerLookup
INFO: No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
04/12/2006 11:17:44 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Automatic flush during beforeCompletion(): disabled
04/12/2006 11:17:44 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Automatic session close at end of transaction: disabled
04/12/2006 11:17:44 org.hibernate.cfg.SettingsFactory buildSettings
INFO: JDBC batch size: 15
04/12/2006 11:17:44 org.hibernate.cfg.SettingsFactory buildSettings
INFO: JDBC batch updates for versioned data: disabled
04/12/2006 11:17:44 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Scrollable result sets: enabled
04/12/2006 11:17:44 org.hibernate.cfg.SettingsFactory buildSettings
INFO: JDBC3 getGeneratedKeys(): enabled
04/12/2006 11:17:44 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Connection release mode: auto
04/12/2006 11:17:44 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Maximum outer join fetch depth: 2
04/12/2006 11:17:44 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Default batch fetch size: 1
04/12/2006 11:17:44 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Generate SQL with comments: disabled
04/12/2006 11:17:44 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Order SQL updates by primary key: disabled
04/12/2006 11:17:44 org.hibernate.cfg.SettingsFactory createQueryTranslatorFactory
INFO: Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
04/12/2006 11:17:44 org.hibernate.hql.ast.ASTQueryTranslatorFactory <init>
INFO: Using ASTQueryTranslatorFactory
04/12/2006 11:17:44 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Query language substitutions: {}
04/12/2006 11:17:44 org.hibernate.cfg.SettingsFactory buildSettings
INFO: JPA-QL strict compliance: disabled
04/12/2006 11:17:44 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Second-level cache: enabled
04/12/2006 11:17:44 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Query cache: disabled
04/12/2006 11:17:44 org.hibernate.cfg.SettingsFactory createCacheProvider
INFO: Cache provider: org.hibernate.cache.NoCacheProvider
04/12/2006 11:17:44 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Optimize cache for minimal puts: disabled
04/12/2006 11:17:44 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Structured second-level cache entries: disabled
04/12/2006 11:17:44 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Statistics: disabled
04/12/2006 11:17:44 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Deleted entity synthetic identifier rollback: disabled
04/12/2006 11:17:44 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Default entity-mode: pojo
04/12/2006 11:17:44 org.hibernate.impl.SessionFactoryImpl <init>
INFO: building session factory
04/12/2006 11:17:44 org.hibernate.impl.SessionFactoryObjectFactory addInstance
INFO: Not binding factory to JNDI, no JNDI name configured
org.hibernate.MappingException: Unknown entity: entity.Empresa
	at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:548)
	at org.hibernate.impl.SessionImpl.getEntityPersister(SessionImpl.java:1338)
	at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:96)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:186)
	at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:175)
	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 dao.EmpresaDAO.save(EmpresaDAO.java:20)
	at teste.Teste.main(Teste.java:18)

A essas alturas acho que você já resolveu, mas como outras pessoas podem chegar aqui por conta do mesmo erro…
O problema tá no seu import: org.hibernate.annotations.Entity :twisted:
Você não deve importar essa annotation mas sim javax.persistence.Entity :wink:

Não seria:

 &lt;mapping resource="entity/Empresa.hbm.xml"/&gt;

[quote=ramilani12]Não seria:

&lt;mapping resource="entity/Empresa.hbm.xml"/&gt; [/quote]Não. A classe dele está usando annotations e nao xml.

Salvou meu dia! :smiley:

[quote=pab]A essas alturas acho que você já resolveu, mas como outras pessoas podem chegar aqui por conta do mesmo erro…
O problema tá no seu import: org.hibernate.annotations.Entity :twisted:
Você não deve importar essa annotation mas sim javax.persistence.Entity :wink:
[/quote]

Cometi o mesmo erro algum tempo atrás. O problema é o complete code, as vezes a gente acredita na 1ª sugestão que ele dá, :lol:

Na documentação diz que você deve sempre usar as annotations do pacote javax.persistence, e usar as annotations do hibernate (citada como extensions) para comportamentos proprietários do Hibernate que não estão na spec do JPA.

Por exemplo: @Formula, @entity(mutable=false), etc…

Pessoal, to caindo nesse mesmo erro.

Meu 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>
...
	<!-- entidades -->
...
<mapping class="br.com.projeto.objeto.Categoria"/>

</session-factory>
</hibernate-configuration>

Minha classe:

package br.com.projeto.objeto;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="tb_categorias")
public class Categoria {
@Id @GeneratedValue
@Column(name="id_categoria")
Long id;
@Column(name="ds_nome")
String nome;
public Long getId() {
	return id;
}
public void setId(Long id) {
	this.id = id;
}
public String getNome() {
	return nome;
}
public void setNome(String nome) {
	this.nome = nome;
}


}

Meu chamado ao hibernate:

package br.com.projeto.dao;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;
import br.com.caelum.vraptor.ioc.Component;
import br.com.projeto.objeto.Categoria;
@Component
public class CategoriaDao {
	private final Session sessao;
	
	public CategoriaDao(Session sessao) {
		super();
		this.sessao = sessao;
	}
...
	public void salva(Categoria categoria) {
		Transaction tx = sessao.beginTransaction();
		sessao.save(categoria);
		tx.commit();
	}

}

Ja restartei varias vezes o Tomcat e o eclipse e ele cai no mesmo erro:

Caused by: org.hibernate.MappingException: Unknown entity: br.com.thor.projeto.Categoria
	at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:701)
	at org.hibernate.impl.SessionImpl.getEntityPersister(SessionImpl.java:1475)

[quote=garcia-jj]Na documentação diz que você deve sempre usar as annotations do pacote javax.persistence, e usar as annotations do hibernate (citada como extensions) para comportamentos proprietários do Hibernate que não estão na spec do JPA.

Por exemplo: @Formula, @entity(mutable=false), etc…[/quote]

Isso mesmo bom, alterei só a @Entity para ao invés de importar da javax.persistence , importar agora da import org.hibernate.annotations.

Funfou na hora mas depois, com outra classe nao deu de novo, cai no mesmo erro, alguem sabe o q pode ser?

[quote=pab]A essas alturas acho que você já resolveu, mas como outras pessoas podem chegar aqui por conta do mesmo erro…
O problema tá no seu import: org.hibernate.annotations.Entity :twisted:
Você não deve importar essa annotation mas sim javax.persistence.Entity :wink:
[/quote]

Valeu cara, tava passando por esse mesmo problema. Troquei o import do org.hibernate.annotations para o javax.persistence e resolveu.