[RESOLVIDO] - Erro Hibernate

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.

[quote]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)[/quote]

Minhas classes estão assim:

[code]/*

  • 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;
}

}
[/code]

[code]/*

  • 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();

    }

}
[/code]

Agradeço antecipadamente!

Parece que falta Esse jar.

:wink:

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…

Seria essa?

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

[quote=lgweb]Parece que falta Esse jar.

:wink: [/quote]

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.

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!

[quote=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![/quote]

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.

Galera,

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

[quote]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[/quote]

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

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+

Perfeito!!! Era esse o erro!!

Brigadão!!