2011-09-19 14 views
8

construyo mi HibernateUtil esta manera:Hibernate: Se requiere una instancia AnnotationConfiguration utilizar ... error

public class HibernateUtil { 

     private static final SessionFactory sessionFactory; 

     static { 
      try { 
       // Create the SessionFactory from standard (hibernate.cfg.xml) config file. 
       sessionFactory = new Configuration().configure().buildSessionFactory(); 

      } catch (Throwable ex) { 
       // Log the exception. 
       System.err.println("Initial SessionFactory creation failed." + ex); 
       throw new ExceptionInInitializerError(ex); 
      } 
     } 

     public static SessionFactory getSessionFactory() { 
      return sessionFactory; 
     } 
} 

Así que cuando trato de ejecutar el comando HQL en HQL Editor en Eclipse (con Hibernate Herramientas) da el siguiente error: enter image description here ¿Por qué sucede esto? No debería cambiar la configuración de anotación por Configurar una anotación?

ACTUALIZACIÓN

<?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.connection.driver_class">com.mysql.jdbc.Driver</property> 
     <property name="hibernate.connection.password"><password></property> 
     <property name="hibernate.connection.url">jdbc:mysql://<hostname>:3306/<schema></property> 
     <property name="hibernate.connection.username">root</property> 
     <!-- <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> --> 
     <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 

     <!-- SQL --> 
     <property name="hibernate.format_sql">true</property> 
     <property name="hibernate.show_sql">true</property> 
     <!-- C3P0 --> 
     <property name="hibernate.c3p0.acquire_increment">2</property> 
     <property name="hibernate.c3p0.max_size">20</property> 
     <property name="hibernate.c3p0.min_size">5</property> 
     <property name="hibernate.c3p0.timeout">180</property> 
     <property name="hibernate.c3p0.idle_test_period">100</property> 
     <!-- Classes --> 
     <mapping class="com.suaparte.pojo.Area" /> 
    </session-factory> 
</hibernate-configuration> 

Gracias de antemano.

+0

Puede pega el hibernate.cfg.xml? Puedes omitir las clases si te gusta. Las propiedades. – ssedano

+0

Actualizo mi publicación Udo. –

Respuesta

12

Si tiene algún error, y está utilizando hibernación versión> = 4.0, el problema probablemente esté en la configuración de la consola de Hibernate.

intenta ir a:

Run -> Ejecutar configuraciones

y abra la configuración que ha creado, sobre los principales cambios pestaña Tipo de Núcleo de Anotaciones. Aquí una captura de pantalla: enter image description here

2

tratar de construir como:

AnnotationConfiguration().configure().buildSessionFactory(); 

Para hacerlo, es necesario lo siguiente:

Hibernate annotations 

Saludos.

Udo.

+0

Ya lo intenté con Udo, sin éxito. –

-1

Crear una clase de utilidad que devuelven un objeto SessionFactory:

public class HibernateUtil { 

    private static SessionFactory sessionFactory; 

    static { 
     try { 
      sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory(); 
     } 
     catch(Throwable t) { 
      throw new ExceptionInInitializerError(t); 
     } 
    } 

    public static SessionFactory getSessionFactory() { 
     return sessionFactory; 
    } 

    public static void shutdown() { 
     getSessionFactory().close(); 
    } 
} 

y llaman a esto en su clase principal como esto:

SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 
Session session = sessionFactory.getCurrentSession(); 
6

Sólo cambia de configuración() para AnnotationConfiguration()

+0

El uso de 'AnnotationConfiguration' está en desuso. – SureshS

1

puede utilizar AnnotationConfiguration() en lugar de Configuración()

3

he cambiado mi código de

Configuration cfg=new Configuration(); 
      cfg.configure("hibernate.cfg.xml");   
      SessionFactory factory=cfg.buildSessionFactory(); 

Para

SessionFactory factory=new AnnotationConfiguration().configure("hibernate.cfg.xml").buildSessionFactory(); 

Además, no he agregado anotaciones "@Id" en mi clase POJO. Después de agregar "@Id", resolví mi problema por completo.

2

Intente descargar la versión hibernate de los servidores de distribución 3.6.4, utilice la versión jre1.6.0_07. haciendo esto, puede crear con éxito un nuevo objeto de configuración como se muestra a continuación en lugar de usar AnnotationConfiguration().

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); 
0
AnnotationConfiguration configuration=new AnnotationConfiguration(); 

    configuration.configure("hibernate.cfg.xml"); 

    SessionFactory factory=configuration.buildSessionFactory(); 

    Session session=factory.openSession(); 
+0

Quizás describa lo que hizo y por qué funciona. –

+0

Bienvenido al desbordamiento de la pila :-) Las respuestas de solo código no son útiles para la comunidad. Por favor mira [respuesta] – JimHawkins

0

Intente cambiar la configuración(). Configure(). BuildSessionFactory() en AnnotationConfiguration(). Configure(). BuildSessionFactory() e incluyen hibernación-annotations.jar en la ruta de clase

Cuestiones relacionadas