Falha no Hibernate Syncronizer

11 respostas
C

Pessoal, estou tentando executar este código, sobre as classes geradas pelo hibernate syncronizer. Mas a 1ª linha (_RootDAO.initialize() )gera uma exceção:

//			load the configuration file
		 _RootDAO.initialize();
		 TbestadoDAO dao = new TbestadoDAO();
//			find all people
		 List people = dao.findAll();
//			find a single person
		 Long id = new Long(3);
		 Tbestado estado = dao.load(new Integer(3));
//			update the estado
		 estado.setDsEstado("Joe");
		 dao.update(estado);
A exceção é esta

[color=red]java.lang.NoClassDefFoundError: org/dom4j/Attribute

at src.base._BaseRootDAO.initialize(_BaseRootDAO.java:48)

at src.base._BaseRootDAO.initialize(_BaseRootDAO.java:37)

at src.App.main(App.java:16)[/color]

Tenho certeza q pelo menos a conexão com o banco está OK, pois fiz testes usando jdbc.

11 Respostas

caiofilipini

Tem o JAR do Dom4J no classpath?

C

Coloquei somente o hibernate.jar no classpath do projeto.
Observei q na pasta lib do Hibernate, tem essa classes (dom4j-1.4.jar) e várias outras.

Tenho que adicionar essa pasta ou todas os .jar dela no classpath???

TedLoprao

No readme que vc encontra na pasta lib diz quais são os arquivos jar que são necessários e quais são opcionais!!

Fallow

C
Cara, peguei outro projeto p/ testar, aquele tutorial de hibernate do GUJ, adicionei todas as classe do lib da pasta Hibernate ao build path do projeto, mas ainda obtenho este erro:

[color=red]java.lang.UnsupportedOperationException: The user must supply a JDBC connection

at net.sf.hibernate.connection.UserSuppliedConnectionProvider.getConnection(UserSuppliedConnectionProvider.java:32)

at net.sf.hibernate.impl.BatcherImpl.openConnection(BatcherImpl.java:286)

at net.sf.hibernate.impl.SessionImpl.connect(SessionImpl.java:3326)

at net.sf.hibernate.impl.SessionImpl.connection(SessionImpl.java:3286)

at net.sf.hibernate.impl.BatcherImpl.prepareStatement(BatcherImpl.java:61)

at net.sf.hibernate.impl.BatcherImpl.prepareStatement(BatcherImpl.java:56)

at net.sf.hibernate.impl.BatcherImpl.prepareBatchStatement(BatcherImpl.java:109)

at net.sf.hibernate.persister.EntityPersister.insert(EntityPersister.java:460)

at net.sf.hibernate.persister.EntityPersister.insert(EntityPersister.java:442)

at net.sf.hibernate.impl.ScheduledInsertion.execute(ScheduledInsertion.java:29)

at net.sf.hibernate.impl.SessionImpl.executeAll(SessionImpl.java:2418)

at net.sf.hibernate.impl.SessionImpl.execute(SessionImpl.java:2371)

at net.sf.hibernate.impl.SessionImpl.flush(SessionImpl.java:2240)

at src.AmigoDAO.insert(AmigoDAO.java:22)

at src.App.main(App.java:19)[/color]
<hibernate-configuration>
    <session-factory >

		<!-- local connection properties -->
		<property name="hibernate.connection.url"> jdbc:mysql:localhost:mes</property>
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password"></property>
		<!-- property name="hibernate.connection.pool_size"></property -->

		<!-- dialect for MySQL -->
        <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>

        <property name="hibernate.show_sql">false</property>
        <property name="hibernate.use_outer_join">true</property>
        <property name="hibernate.transaction.factory_class">net.sf.hibernate.transaction.JTATransactionFactory</property>
        <property name="jta.UserTransaction">java:comp/UserTransaction</property>

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

classe Amigo:

public AmigoDAO() throws Exception{
    	
		Configuration cfg = new Configuration();
		cfg.addClass(Amigo.class);			
		factory = cfg.buildSessionFactory();
    }
    
    public void insert(Amigo amigo) throws Exception{
        Session session = factory.openSession();
        session.save(amigo);
        session.flush();
        session.close();
    }
TedLoprao

Aparentemente o hibernate não está conseguindo gerar a conexão para vc e está pedindo para vc passar uma por parâmetro!!!

Talvez o seu arquivo de configuração esteja em um local que o hibernate não consiga vê-lo…

Fallow

C

Li no fórum do hibernate que pode ser necessário incluir o arquivo hibernate.cfg.xml no path do projeto, pq o eclipse não faz isto. É verdade mesmo ?? Se for, como será eu faço isto?

TedLoprao

Hmm, não seria adicionar no Java Build Path?? Se for, basta clicar com o direito no projeto e abrir as propriedades, ali vc tem o Java Build Path!!

Fallow

C

dei uma olhada nisso, mas o meu projeto já aparece no Java Build Path, na aba “Source” e na aba “Order and Export”.
Será q tem algo errado com a estrutura do meu projeto? Coloquei o hibernate.cfg.xml no root do projeto assim:

-Hibernate-Ex-Guj <-- Pasta do projeto ---src <--package com as classes Amigo, AmigoDAO e o mapping Amigo.hbm.xml. ---hibernate.cfg.xml <-- O dito cujo

TedLoprao

Só para teste tente mover o cfg para dentro do src! Posta aí o q aconteceu…

Fallow

C

Fiz o teste mas dá o mesmo erro, snif sinf

TedLoprao

Tente usar esse comando para criar sua SessionFactory:

new Configuration().configure("/hibernate.cfg.xml").buildSessionFactory();

Onde a String contenha o caminho para o seu arquivo cfg…

Fallow

Criado 11 de agosto de 2004
Ultima resposta 16 de ago. de 2004
Respostas 11
Participantes 3