Erro Hibernate

8 respostas
V

Pessoal estou começando no Hibernate, estou fazeendo uns testes aqui é gerou o seguinte erro:

12:18:21,891 ERROR DatastoreImpl:109 - Could not compile the mapping document

cirrus.hibernate.MappingException: persistent class not found

at cirrus.hibernate.map.PersistentClass.(PersistentClass.java:31)

at cirrus.hibernate.map.RootClass.(RootClass.java:89)

at cirrus.hibernate.map.Root.(Root.java:135)

at cirrus.hibernate.impl.DatastoreImpl.store(DatastoreImpl.java:106)

at cirrus.hibernate.impl.DatastoreImpl.storeInputStream(DatastoreImpl.java:116)

at cirrus.hibernate.impl.DatastoreImpl.storeClass(DatastoreImpl.java:140)

at br.AmigoDAO.(AmigoDAO.java:16)

at br.Teste.main(Teste.java:15)

Caused by: java.lang.ClassNotFoundException: Amigo

at java.net.URLClassLoader$1.run(URLClassLoader.java:199)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(URLClassLoader.java:187)

at java.lang.ClassLoader.loadClass(ClassLoader.java:289)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)

at java.lang.ClassLoader.loadClass(ClassLoader.java:235)

at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Class.java:141)

at cirrus.hibernate.helpers.ReflectHelper.classForName(ReflectHelper.java:243)

at cirrus.hibernate.map.PersistentClass.(PersistentClass.java:28)

 7 more

Ocorreu um Erro>cirrus.hibernate.MappingException: persistent class not found

Alguem sabe o que esta acontecendo…?

8 Respostas

Leandro_BSB

aparentemente, o hibernate não conseguiu achar a classe Amigo:

Posta os seus arquivos de mapeamento para darmos uma olhada!

[]s

Leandro

V

Este é o XML de mapeamento:

code:

<?xml version="1.0"?>
V

Minha classe Amigo:

public class Amigo {
private String nome;

private String endereco;

private String telefone;

private String celular;

private String email;


public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

public String getEndereco() {
	return endereco;
}

public void setEndereco(String Endereco) {
	this.endereco = Endereco;
}

public String getTelefone() {
	return telefone;
}

public void setTelefone(String Telefone) {
	this.telefone = Telefone;
}

public String getEmail() {
	return email;
}

public void setEmail(String Email) {
	this.email = Email;
}

public String getCelular() {
	return celular;
}

public void setCelular(String Celular) {
	this.celular = Celular;
}

minha classe DAO

import java.util.List;

import cirrus.hibernate.Datastore;

import cirrus.hibernate.Hibernate;

import cirrus.hibernate.Session;

import cirrus.hibernate.SessionFactory;

public class AmigoDAO{

private SessionFactory factory;

public AmigoDAO() throws Exception{    	
	Datastore datastore = Hibernate.createDatastore();
	datastore.storeClass(Amigo.class);
	factory = datastore.buildSessionFactory();
}

public void insert(Amigo amigo) throws Exception{
    Session session = factory.openSession();
    session.save(amigo);
    session.flush();
    session.close();
}

public List getList(String condicao) throws Exception{
    Session session = factory.openSession();
    List amigos =  ((Session) session).find(condicao);
    session.flush();
    session.close();
    return amigos;
}

public Amigo retrieve(String pk) throws Exception{
    Session session = factory.openSession();
    Amigo amigo = (Amigo)session.load(Amigo.class, pk);
    session.flush();
    session.close();
    return amigo;
}

public void delete(Amigo amigo) throws Exception{
    Session session = factory.openSession();
    session.delete(amigo);
    session.flush();
    session.close();
}

}

Leandro_BSB

E o hibernate.cfg.xml? em que pacote está a classe amigo?

[]s

Leandro

V

certo vamos por partes no exemplo que eu peguei nao tem nenhum hibernate.cfg.xml , é a mesma coisa q o hibernate.properties?

intao consigui fazer passar agora esta gerando o seguinte erro :

2006-04-04 16:53:52,918 INFO  hibernate.cfg.Environment  -> Hibernate 2.0 final

2006-04-04 16:53:52,918 INFO  hibernate.cfg.Environment  -> hibernate.properties not found

2006-04-04 16:53:52,918 INFO  hibernate.cfg.Environment  -> using CGLIB reflection optimizer

2006-04-04 16:53:52,918 INFO  hibernate.cfg.Environment  -> JVM proxy support: true

2006-04-04 16:53:52,935 INFO  hibernate.cfg.Configuration  -> Mapping resource: br/Amigo.hbm.xml

2006-04-04 16:53:53,050 DEBUG hibernate.util.DTDEntityResolver  -> trying to locate <a href="http://hibernate.sourceforge.net/hibernate-mapping.dtd">http://hibernate.sourceforge.net/hibernate-mapping.dtd</a> in classpath under net/sf/hibernate/

2006-04-04 16:53:53,066 DEBUG hibernate.util.DTDEntityResolver  -> <a href="http://hibernate.sourceforge.net/hibernate-mapping.dtdnot">http://hibernate.sourceforge.net/hibernate-mapping.dtdnot</a> found in classpath

2006-04-04 16:53:53,347 INFO  hibernate.mapping.Collection  -> Mapping class: br.Amigo -> amigos

java.lang.NoClassDefFoundError: net/sf/cglib/KeyFactory

at net.sf.hibernate.impl.SessionFactoryImpl.(SessionFactoryImpl.java:318)

at net.sf.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:613)

at br.AmigoDAO.(AmigoDAO.java:17)

at br.Teste.main(Teste.java:15)

Exception in thread “main”
V

isso ta me deixando maluco ja …quero usar isso em uma trabalho de estagio da facul…!! :slight_smile:

furutani

Olha que legal! :smiley:
Mas dá uma conferida se todos os jar’s estão no classpath, pq pareceq esta faltando o java.lang.NoClassDefFoundError: net/sf/cglib/KeyFactory

Leandro_BSB

vinny,

uma das formas de configurar o hibernate, é por meio do arquivo hibernate.cfg.xml, que não é a mesma coisa que o hibernate.properties

segue um exemplo adaptado do Hibernate Reference Documentation, Version: 3.0.5, p. 11

<?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.PostgreSQLDialect</property>
	<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>	
	

	<property name="hibernate.connection.url">url</property>
		<property name="hibernate.connection.username">usuario</property>
	<property name="hibernate.connection.password">senha</property> 

   	<!-- Mapping files -->   
   	<mapping resource="Cat.hbm.xml"/>  
	 
  </session-factory> 
  
</hibernate-configuration>

este arquivo deve ficar em WEB-INF/classes:

é neste arquivo que você mapeia os arquivos de configuração das classes, na sessão “Mapping files”.

Além disso, parece que está havendo algum erro com o id da sua classe. Por enquanto, durante o aprendizado, você pode usar

<generator class="increment"/>

no lugar de

<generator class="assigned"/>

[]s

Leandro

Criado 4 de abril de 2006
Ultima resposta 5 de abr. de 2006
Respostas 8
Participantes 3