Hibernate: hibernate.cfg.xml

12 respostas
C

Olá pessoa!!

Queria sabar se algúem poderia me ajudar com o seguinte problema:

Estou tentando criar um projeto usando o Hibernate só que estou tendo um pequeno problema...quando coloco minha aplicação para rodar é remetida a seguinte msg de erro:
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
	at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:110)
	at hibernate.SessionManager.<clinit>(SessionManager.java:30)
	at hibernate.beans.ClienteDAO.insert(ClienteDAO.java:14)
	at hibernate.test.HibernateTest.main(HibernateTest.java:26)
Exception in thread "main"
Ele não está encontrando o arquivo hibernate.cfg.xml acredito! Este arquivo esta na raiz do meu projeto. Abaixo segue o trecho de código onde esta sendo utilizado este arquivo(classe SessionManager.java):
private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";

    /** Holds a single instance of Session */
    private static final ThreadLocal threadLocal = new ThreadLocal();

    /** The single instance of hibernate configuration */
    private static final Configuration cfg = new Configuration();

    /** The single instance of hibernate SessionFactory */
    private static org.hibernate.SessionFactory sessionFactory;

    /**
     * Returns the ThreadLocal Session instance.  Lazy initialize
     * the <code>SessionFactory</code> if needed.
     *
     *  @return Session
     *  @throws HibernateException
     */
    public static Session currentSession() throws HibernateException {
        Session session = (Session) threadLocal.get();

        if (session == null) {
            if (sessionFactory == null) {
                try {
                    cfg.configure(CONFIG_FILE_LOCATION);
                    sessionFactory = cfg.buildSessionFactory();
                }
                catch (Exception e) {
                    System.err.println("%%%% Error Creating SessionFactory %%%%");
                    e.printStackTrace();
                }
            }
            session = sessionFactory.openSession();
            threadLocal.set(session);
        }

        return session;
    }
Desde já agradeço a atenção!

12 Respostas

brunocosta

org/apache/commons/logging/LogFactory é uma classe do Commons logging. Veja se vc tem algum commons-logging.jar no seu classpath… ele vem junto com as libs do hibernate ou vc pode pegar em http://jakarta.apache.org/commons/logging/

W

no seu hibernate.cfg.xml vc adicionou o Tabela.hbm.xml do mapeamento relacional?

<mapping resource="br/.../mapping/Tabela.hbm.xml"/>
C

Olá o problemas dos jar’s foi resolvido!!!Muito obrigado pela ajuda.

Mas quando executo a aplicação ainda surge um erro:

21/07/2005 15:12:58 org.hibernate.util.JDBCExceptionReporter logExceptions WARNING: SQL Error: 0, SQLState: 42501 21/07/2005 15:12:58 org.hibernate.util.JDBCExceptionReporter logExceptions SEVERE: ERROR: permission denied for relation cliente

Alguém teria uma idéia do que poderia ser?
Agradeço antecipadamente!!!

brunocosta

E qual o banco de dados? Parece que o usuário que você tá usando pra conectar não tem permissão de acesso :wink:

C

O banco de dados utilizando é o PostGre!!
Segue abaixo a exceção:

Caused by: java.sql.SQLException: ERROR: permission denied for relation cliente at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1471) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1256) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:175) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:389) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:330) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:240) at org.hibernate.id.IncrementGenerator.getNext(IncrementGenerator.java:89) ... 11 more

brunocosta

Hmmm num sei nada de postgre!
Mas deve ser algo relacionado às permissões… dê uma olhada na documentaçao…

passos

O usuario que vc esta utilizando nao deve ter permissão para executar o comando solicitado. Vc consegui fazer este mesmo comando manualmente?

C

Olá pessoal…desculpas ai por tá enchendo o saco de todos vcs!!

O problema de conexão com o banco foi resolvido, mas agora surge outra exceção:

org.hibernate.id.IdentifierGenerationException: this id generator generates long, integer, short at org.hibernate.id.IdentifierGeneratorFactory.createNumber(IdentifierGeneratorFactory.java:119) at org.hibernate.id.IncrementGenerator.generate(IncrementGenerator.java:47) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:85) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:184) at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:173) at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:69) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:481) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:476) at hibernate.beans.ClienteDAO.insert(ClienteDAO.java:16) at hibernate.test.HibernateTest.main(HibernateTest.java:24)
Agradeço a atenção !!!

brunocosta

Agora vc vai ter que postar seu hbm.xml aqui… parece que o tipo do atributo “id” de seu objeto não coincide com o tipo que vc declarou no hbm.xml…

C

Ah saquei o que era… havia um campo do tipo String que possuia um <generator class=“increment”/>, mas o PostGre ou o Hibernate não aceita increment para String, apenas long, int e short!!!

Bruno muito obrigado por sua paciência e atenção ok?

[]'s Clodoaldo Gouveia

C

Só uma dica,
Se a sua pergunta inicial foi resolvida, abra outro post, pois fazendo pergunta de assuntos diferentes no mesmo post, vc pode estar camuflando uma possível dúvida de outra pessoa. Pq se o cara tah procurando um assunto x, e o post começa com assunto y e tem várias páginas, ele num vai página por página para ver se tem o assunto x, ele vai preferir colocar a culpa na busca do fórum.

brunocosta

tem razao :smiley:

Criado 21 de julho de 2005
Ultima resposta 21 de jul. de 2005
Respostas 12
Participantes 5