Hibernate - Unknown Entity

4 respostas
K

Pessoal, estou começando a conhecer o Hibernate, e sempre nesses primeiros passos a gente rala muito e tem algumas duvidas um tanto absurdas.

Estou usando Annotations. Sendo assim, ‘anotei’ duas classes da forma que eh apresentado na documentacao do hibernate.org. Uma dessas classes é uma superclasse abstrata, ou seja, ainda não há relacionamentos.

Inicio uma session e uma transaction, passo valores aos meus setters e tudo mais como os exemplos que encontrei. Mas na hora que compilo, vem o seguinte erro:

Exception in thread "main" org.hibernate.MappingException: Unknown entity: Model.Usuario
        at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:547)

O hibernate conecta ao meu banco, mas não há esta tabela, pois espero que o hibernate a crie. Estou certo?
Quanto ao mapeamento dela no hibernate.cfg.xml, acredito que tenha feito da forma correta vejam:

<hibernate-configuration>

    <session-factory>

        <mapping class="Model.Pessoa"/>
   <mapping class="Model.Usuario"/>
       
    </session-factory>

</hibernate-configuration>

O estranho, é que independente de ter isso ou nao no meu cfg.xml o erro é o mesmo. Se eu passar essas classes usando um .addAnnotatedClass(), o erro é o mesmo.

Estou achando estranho o comportamento desse meu cfg.xml, pois ele parece estar sendo ignorado. Já coloquei ele em todos os lugares possíveis. Tentei passar seu caminho na assinatura do metodo configure(), mas não adianta.

Importei todas as bibliotecas do hibernate 3.2 e hibernate annotations 3.2, além de estar usando Java 5. Além de estar usando javax.persistence ao inves do org.hibernate.persistence que é uma das falhas que causam este tipo de erro.

Nas minhas classes anotadas, não há nada diferente do que pode ser encontrado nos tutoriais do hibernate.org

No meu hibernate.properties, eu já defini que o banco deve ser criado, e não criado e depois dropado.

Alguém tem uma luz pra mim?

Obrigado

4 Respostas

plentz

Revise:

  • Qual o pacote que estão suas classes?
  • Seu hibernate.cfg.xml está no classpath?
  • Você está usando o Hibernate 3.2 rc2 e o Hibernate annotations 3.2 rc1?
K

Ok plentz, eh o seguinte:

Model: Pessoa.java, Usuario.java
Main: Main.java
root do projeto: hibernate.cfg.xml, hibernate.properties, lo4j.properties, HibernateUtil.java

Olha, a unica coisa que fiz com o cfg.xml foi deixá-lo no diretório root do projeto, nada mais.

Sim, são exatamente essas as versões do hibernate que estou usando. Há algum proplema nisso?

plentz

O root do seu projeto está no classpath?
Aparentemente é o único problema.

K

Poxa, agora eu fiquei pra trás. Como eu coloco o root no classpath, e o que isso implica?

Digo isso, pois em todos tutoriais que vi, nunca encontrei nada sobre isso. Ou pelo menos nao tao obvio.

Criado 5 de setembro de 2006
Ultima resposta 6 de set. de 2006
Respostas 4
Participantes 2