[RESOLVIDO] - Erro Hibernate

10 respostas
P

Galera,

Estou comecando agora a estudar o hibernate e já me deparei com um erro que eu não entendi nada!! Eu adcionei a biblioteca do hibernate que já vem no NetBeans. Será que é isso? Se for, eu entri no site do hibernate e fiquei todo perdido no que tenho que baixar.

run: 22/08/2010 22:46:04 org.hibernate.cfg.annotations.Version INFO: Hibernate Annotations 3.3.1.GA 22/08/2010 22:46:04 org.hibernate.cfg.Environment INFO: Hibernate 3.2.5 22/08/2010 22:46:04 org.hibernate.cfg.Environment INFO: hibernate.properties not found 22/08/2010 22:46:04 org.hibernate.cfg.Environment buildBytecodeProvider INFO: Bytecode provider name : cglib 22/08/2010 22:46:04 org.hibernate.cfg.Environment INFO: using JDK 1.4 java.sql.Timestamp handling 22/08/2010 22:46:04 org.hibernate.cfg.AnnotationBinder bindClass INFO: Binding entity from annotated class: firsthibernateapp.Users 22/08/2010 22:46:04 org.hibernate.cfg.annotations.EntityBinder bindTable INFO: Bind entity firsthibernateapp.Users on table testehibernate.users 22/08/2010 22:46:04 org.hibernate.cfg.AnnotationConfiguration secondPassCompile INFO: Hibernate Validator not found: ignoring 22/08/2010 22:46:04 org.hibernate.connection.C3P0ConnectionProvider configure INFO: C3P0 using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://localhost:3306/testehibernate 22/08/2010 22:46:04 org.hibernate.connection.C3P0ConnectionProvider configure INFO: Connection properties: {user=root, password=****} 22/08/2010 22:46:04 org.hibernate.connection.C3P0ConnectionProvider configure INFO: autocommit mode: false Exception in thread "main" java.lang.NoClassDefFoundError: com/mchange/v2/c3p0/DataSources at org.hibernate.connection.C3P0ConnectionProvider.configure(C3P0ConnectionProvider.java:154) at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124) at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:56) at org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:414) at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:62) at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292) at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859) at firsthibernateapp.Main.main(Main.java:31) Caused by: java.lang.ClassNotFoundException: com.mchange.v2.c3p0.DataSources at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:303) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316) ... 9 more Java Result: 1 CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)
Minhas classes estão assim:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package firsthibernateapp;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;



/**
 *
 * @author Administrador
 */

@Entity
@Table(name="testehibernate.users")
public class Users implements Serializable {

    @Id
    private Integer id;

    @Column(name="name")
    private String myName;

    public Users()
    {
    }

    public Integer getId()
    {
        return id;
    }

    public void setId(Integer id)
    {
        this.id = id;
    }

    public String getMyName()
    {
        return myName;
    }

    public void setMyName(String myName)
    {
        this.myName = myName;
    }


    @Override
    public boolean equals(Object obj)
    {
        if (obj == null)
        {
            return false;
        }
        if (getClass() != obj.getClass())
        {
            return false;
        }
        final Users other = (Users) obj;
        if (this.id != other.id && (this.id == null || !this.id.equals(other.id)))
        {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode()
    {
        int hash = 3;
        hash = 67 * hash + (this.id != null ? this.id.hashCode() : 0);
        return hash;
    }
    


}
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package firsthibernateapp;

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

/**
 *
 * @author Administrador
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
    

        SessionFactory sf = new AnnotationConfiguration()
                .setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect")
                .setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver")
                .setProperty("hibernate.connection.url", "jdbc:mysql://localhost:3306/testehibernate")
                .setProperty("hibernate.connection.username", "root")
                .setProperty("hibernate.connection.password", "x123456")
                .setProperty("hibernate.show_sql", "true")
                .setProperty("hibernate.format_sql", "true")
                .setProperty("hibernate.c3p0.acquire_increment", "1")
                .setProperty("hibernate.c3p0.idle_test_period", "100")
                .setProperty("hibernate.c3p0.max_size", "10")
                .setProperty("hibernate.c3p0.max_statements", "0")
                .setProperty("hibernate.c3p0.min_size", "5")
                .setProperty("hibernate.c3p0.timeout", "100")
                .addAnnotatedClass(Users.class)
                .buildSessionFactory();

        Session session = sf.openSession();
        session.beginTransaction();

        Users user = (Users) session.get(Users.class, 1);
        System.out.println("The user is: "+user.getMyName());

        session.getTransaction().commit();
        session.close();
        sf.close();

    }

}

Agradeço antecipadamente!

10 Respostas

L

Parece que falta Esse jar.

:wink:

G

Evite dores de cabeça com as dependências do hibernate. A versão 3.5 está o bixo… Procure um tutorial no site da caellum falando sobre as dependências dessa versão do hibernate…

P

Seria essa?

G

Essa mesmo. Estou usando em um projeto pessoal e não tive problemas até agora…

R

lgweb:
Parece que falta Esse jar.

:wink:

Como disse o amigo aqui, vc precisa adicionar o jar do C3P0, já que o colocou como propriedades do hibernate para o pool de conexão.

Baixe esse jar e adicione no seu projeto.

P

Eu adcionei a biblioteca c3p0 e acho( o erro esta no notebnook e estou no pc do trabalho!) que continuou o mesmo erro.

To angustiado com isso!

R

pvrsouza:
Eu adcionei a biblioteca c3p0 e acho( o erro esta no notebnook e estou no pc do trabalho!) que continuou o mesmo erro.

To angustiado com isso!

Se vc adicionou corretamente o o jar no projeto, não pode continuar retornando o mesmo erro.

Pode até dar outros erros, mas não o Caused by: java.lang.ClassNotFoundException: com.mchange.v2.c3p0.DataSources. Pq esse erro é de classe não encontrada, como vc adiciona o jar no projeto ele passa a encontrar a classe.

Tenha certeza que vc adicionou o jar no projeto e não apenas na pasta que contem os jars do projeto.

P

Galera,

Usei todas as dependencias indicadas no blog da caelum e agora deu esse erro:

<blockquote>log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).

log4j:WARN Please initialize the log4j system properly.

Hibernate:

select

users0_.id as id0_0_,

users0_.name as name0_0_

from

testehibernate.users users0_

where

users0_.id=?

Exception in thread main org.hibernate.exception.SQLGrammarException: could not load an entity: [firsthibernateapp.Users#1]

at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:92)

at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)

at org.hibernate.loader.Loader.loadEntity(Loader.java:1937)

at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:86)

at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:76)

at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3270)

at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:496)

at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:477)

at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:227)

at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:285)

at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:152)

at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:1080)

at org.hibernate.impl.SessionImpl.get(SessionImpl.java:997)

at org.hibernate.impl.SessionImpl.get(SessionImpl.java:990)

at firsthibernateapp.Main.main(Main.java:65)

Caused by: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknown column users0_.name in 'field list’

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)

at com.mysql.jdbc.Connection.execSQL(Connection.java:3256)

at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1313)

at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1448)

at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)

at org.hibernate.loader.Loader.getResultSet(Loader.java:1849)

at org.hibernate.loader.Loader.doQuery(Loader.java:718)

at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:270)

at org.hibernate.loader.Loader.loadEntity(Loader.java:1933)

 12 more

Java Result: 1</blockquote>

Desculpem a insistencia. Mas eu estou tendo dificuldades de resolver esse erro!
Rsrssr.

L

Bom agora parece que o erro e no seu mapeamento
tente trocar isso:

@Entity  
 @Table(name="testehibernate.users")

por isso

@Entity  
 @Table(name="users")

axo que seu banco naum vai aceitar criar uma tabela com .(ponto) ou seja naum utilize .(ponto) na string name da anotacao @Table
sei o que vc queria fazer ali,colocar o nome do pacote e o nome da classe,mas ali na propriedade name vc define o nome da sua tabela no banco,
portanto se quiser utilizar nome pacote/nome da classe utilize _
Vc tbm pode omitir a anotacao @Table

t+

P

Perfeito!!! Era esse o erro!!

Brigadão!!

Criado 22 de agosto de 2010
Ultima resposta 23 de ago. de 2010
Respostas 10
Participantes 4