[Hibernate] Khắc phục lỗi An AnnotationConfiguration instance is required to use

Khi sủ dụng Hibernate annotation thì nó yêu cầu sử dụng “AnnotationConfiguration” thay vì “Configuration()” để khởi tạo session factory.

Code:
INFO: Configuration resource: /hibernate.cfg.xml
Initial SessionFactory creation failed.org.hibernate.MappingException:
An AnnotationConfiguration instance is required to use <mapping class="com.mkyong.common.Stock"/>
Exception in thread "main" java.lang.ExceptionInInitializerError
    at com.mkyong.persistence.HibernateUtil.buildSessionFactory(HibernateUtil.java:19)
    at com.mkyong.persistence.HibernateUtil.<clinit>(HibernateUtil.java:8)
    at com.mkyong.common.App.main(App.java:11)
Caused by: org.hibernate.MappingException: An AnnotationConfiguration instance is required to use <mapping class="com.mkyong.common.Stock"/>
    at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1600)
    at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1555)
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1534)
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1508)
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1428)
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1414)
    at com.mkyong.persistence.HibernateUtil.buildSessionFactory(HibernateUtil.java:13)
    ... 2 more

Giải pháp

1. Download thư viện Hibernate annotation

Có thể download tại Hibernate official website

Hoặc

Khai báo Maven dependency trong pom.xml

XML:
<!-- Hibernate annotation -->
<dependency>
    <groupId>hibernate-annotations</groupId>
    <artifactId>hibernate-annotations</artifactId>
    <version>3.3.0.GA</version>
</dependency>
P.S Cần include JBoss repository để download thư viện Hibernate annotation.

XML:
<repositories>
    <repository>
      <id>JBoss repository</id>
      <url>http://repository.jboss.com/maven2/</url>
    </repository>
  </repositories>
2. Sử dụng AnnotationConfiguration để tạo session factory
File Hibernate XML mapping sử dụng Configuration()
Java:
return new Configuration().configure().buildSessionFactory();
Với Hibernate annotation, cần thay đổi thành “AnnotationConfiguration”
Java:
return new AnnotationConfiguration().configure().buildSessionFactory();
HibernateUtil.java
Code đầy đủ của “HibernateUtil.java” sử dụng “AnnotationConfiguration” với Hibernate annotation.

Java:
package com.mkyong.persistence;

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

public class HibernateUtil {

    private static final SessionFactory sessionFactory = buildSessionFactory();

    private static SessionFactory buildSessionFactory() {
        try {
            // Create the SessionFactory from hibernate.cfg.xml
            return new AnnotationConfiguration().configure().buildSessionFactory();

        }
        catch (Throwable ex) {
            // Make sure you log the exception, as it might be swallowed
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public static void shutdown() {
        // Close caches and connection pools
        getSessionFactory().close();
    }

}
Cám ơn các bạn đã theo dõi. Hẹn gặp lại các bạn trong các bài viết sau :D

Bài viết tham khảo tại: https://mkyong.com/hibernate/hibernate-error-an-annotationconfiguration-instance-is-required-to-use/
 

Bình luận