Erro No identifier specified for entity: x.y.z no Hibernate

8 respostas
Flasoft
Pessoal estou tentando fazer meu primeiro exemplo com hibernate em uma base de teste da empresa... mas estou recebendo a seguinte exeção:
org.hibernate.AnnotationException: No identifier specified for entity: br.netanalyse.bean.SnCidadeOperadoraBean
	at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:650)
	at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:498)
	at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:277)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286)
	at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:915)
	at br.netanalyse.hibernate.util.HibernateUtil.<clinit>(HibernateUtil.java:16)
	at br.netanalyse.test.TesteHibernate.main(TesteHibernate.java:14)

Exception in thread "main" java.lang.ExceptionInInitializerError
	at br.netanalyse.hibernate.util.HibernateUtil.<clinit>(HibernateUtil.java:25)
	at br.netanalyse.test.TesteHibernate.main(TesteHibernate.java:14)
Caused by: org.hibernate.AnnotationException: No identifier specified for entity: br.netanalyse.bean.SnCidadeOperadoraBean
	at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:650)
	at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:498)
	at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:277)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286)
	at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:915)
	at br.netanalyse.hibernate.util.HibernateUtil.<clinit>(HibernateUtil.java:16)
	... 1 more

Sabem me informar pq isto está ocorrendo?
Segue abaixo o meu código e a estrutura de diretório que estou utilizando:

hibernate.bra.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <!-- a SessionFactory instance listed as /jndi/name -->
    <session-factory>

        <!-- hibernate common properties -->
        <!-- property name="dialect">org.hibernate.dialect.OracleDialect</property-->
        <property name="dialect">org.hibernate.dialect.Oracle9iDialect</property>
        <property name="show_sql">true</property>
		<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
		<property name="hibernate.connection.url">jdbc:oracle:thin:@5.5.5.150:1521:db02</property>
		<property name="hibernate.connection.username">USR</property>
		<property name="hibernate.connection.password">PASS</property>
    
		<property name="show_sql">true</property>  

		<!-- TENTEI COMENTAR ISTO E DESCOMENTAR O CODIGO DA CLASSE HibernateUtil -->
		<mapping class="br.netanalyse.bean.SnCidadeOperadoraBean"/>
    </session-factory>
</hibernate-configuration>
persistence.xml
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
    version="1.0">
    <persistence-unit name="punit">
    </persistence-unit>
</persistence>
HibernateUtil
package br.netanalyse.hibernate.util;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;

import br.netanalyse.bean.SnCidadeOperadoraBean;

public class HibernateUtil {
	private static final SessionFactory sessionFactory;
	
	static {
		try {
			sessionFactory = new AnnotationConfiguration().configure("hibernate.bra.cfg.xml").buildSessionFactory();
			/*Configuration c = new AnnotationConfiguration().configure("hibernate.bra.cfg.xml");
			c.addClass(SnCidadeOperadoraBean.class);
			sessionFactory = c.buildSessionFactory();*/
			

		} catch (Throwable ex) {
			ex.printStackTrace();
			System.out.println();
			throw new ExceptionInInitializerError(ex);
			
		}
	}

	public static Session getSession() throws HibernateException {
		return sessionFactory.openSession();
	}
}
SnCidadeOperadoraBean
package br.netanalyse.bean;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

@NamedQuery(name="lstSnCidadeOperadoraById",
			query="FROM br.netanalyse.service.sn.SnCidadeOperadoraBean cidadeOperadora " +
                  "WHERE cidadeOperadora.cidContrato = :cidContrato")

@Entity
@Table(schema="prod_jd", name = "sn_cidade_operadora")
public class SnCidadeOperadoraBean {

	private static final long serialVersionUID = 6663273309134361548L;

	@Column(name = "CID_CONTRATO", nullable = false, length = 6)
	private String cidContrato;

	@Column(name = "CI_NOME", nullable = true, length = 50)
	private String ciNome;

	@Column(name = "CI_ESTADO", nullable = true, length = 2)
	private String ciEstado;

	@Column(name = "ID_EMPRESA", nullable = true, length = 7)
	private String idEmpresa;

	@Column(name = "RAZAO_SOCIAL", nullable = true, length = 50)
	private String razaoSocial;

	@Column(name = "NOME_PESSOA", nullable = true, length = 50)
	private String nomePessoa;

	@Column(name = "COD_OPERADORA", nullable = false, length = 3)
	private String codOperadora;

	@Column(name = "ID_TIPO_TRIBUT", nullable = false)
	private Integer idTipoTribut;

	@Column(name = "COD_OPE_JDE", nullable = true, length = 5)
	private String codOpeJde;

	@Column(name = "COD_LOCALIDADE_EBT", nullable = true, length = 3)
	private String codLocalidadeEbt;

	//*** AQUI TEM TODOS OS GETS E SETS ***

}

8 Respostas

T

Você esqueceu de definir qual propriedade e sua PK na entidade SnCidadeOperadoraBean. Na prática tem que anotar uma das propriedades dessa entidade com um @Id

good luck!

Flasoft

Aeee... pessoal consegui... só pra caso alguém tenha o mesmo problema que eu, o erro ocorria porque eu não tinha mapeado a PrimaryKey no bean (@Id)

Agora o bean ficou assim:
package br.netanalyse.bean;

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

@NamedQuery(name="lstSnCidadeOperadoraById",
			query="FROM br.netanalyse.bean.SnCidadeOperadoraBean cidadeOperadora " +
                  "WHERE cidadeOperadora.cidContrato = :cidContrato")

@Entity
@Table(schema="prod_jd", name = "sn_cidade_operadora")
public class SnCidadeOperadoraBean {

	private static final long serialVersionUID = 6663273309134361548L;

	@Id  //FALTAVA ESTE CARA AQUI
	@Column(name = "CID_CONTRATO", nullable = false, length = 6)
	private String cidContrato;

	@Column(name = "CI_NOME", nullable = true, length = 50)
	private String ciNome;

	@Column(name = "CI_ESTADO", nullable = true, length = 2)
	private String ciEstado;

	@Column(name = "ID_EMPRESA", nullable = true, length = 7)
	private String idEmpresa;

	@Column(name = "RAZAO_SOCIAL", nullable = true, length = 50)
	private String razaoSocial;

	@Column(name = "NOME_PESSOA", nullable = true, length = 50)
	private String nomePessoa;

	@Column(name = "COD_OPERADORA", nullable = false, length = 3)
	private String codOperadora;

	@Column(name = "ID_TIPO_TRIBUT", nullable = false)
	private Integer idTipoTribut;

	@Column(name = "COD_OPE_JDE", nullable = true, length = 5)
	private String codOpeJde;

	@Column(name = "COD_LOCALIDADE_EBT", nullable = true, length = 3)
	private String codLocalidadeEbt;

	//gets e sets

}

Após corrigir isto apareceu mais dois erros que eu tinha indicado o endereço do bean errado na lista lstSnCidadeOperadoraById(declarada no próprio bean) e na consulta que fiz no metodo main...
vlw... pessoal

Flasoft

putz cara… vlw msm… mas e qdo for chave composta como eu faço?

T

Nesse link ele explica certinho o que fazer. Há uma outra possibilidade que seria de você não usar ela como composta e por um id digamos assim.

Flasoft

Putz… cara… vlw… já vou testar

cesarjunior82

Rapaz… você não sabe como isso foi util. Valeu mesmo.

alcirBarros

Opa Vlw isso resolveu o meu srsr

ruds

Ajudou demais!
Adoro essa divisão de conhecimento! :smiley:

Criado 4 de fevereiro de 2008
Ultima resposta 16 de dez. de 2012
Respostas 8
Participantes 5