Hibernate Error – An AnnotationConfiguration instance is required to use

The Hibernate annotation is required “AnnotationConfiguration” instead of normal “Configuration()” to build the session factory.


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

Solution

1. Download the Hibernate annotation library

You can download the library from Hibernate official website

Or

Add the dependency in Maven’s pom.xml


        <!-- Hibernate annotation -->
	<dependency>
		<groupId>hibernate-annotations</groupId>
		<artifactId>hibernate-annotations</artifactId>
		<version>3.3.0.GA</version>
	</dependency>

P.S You may need to include the JBoss repository in order to download the Hibernate annotation library.


<repositories>
    <repository>
      <id>JBoss repository</id>
      <url>http://repository.jboss.com/maven2/</url>
    </repository>
  </repositories>

2. Use AnnotationConfiguration to build session factory

Normal Hibernate XML file mapping is using Configuration()


          return new Configuration().configure().buildSessionFactory();  

For Hibernate annotation, you have to change it to “AnnotationConfiguration”


          return new AnnotationConfiguration().configure().buildSessionFactory();  
HibernateUtil.java

A full example of “HibernateUtil.java” of using “AnnotationConfiguration” for Hibernate annotation applacation.


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

}

26 comments on “Hibernate Error – An AnnotationConfiguration instance is required to use

  1. SessionFactory factory= new AnnotationConfiguration().configure().buildSessionFactory();

    and it worked for me

    Reply
  2. Hi

    Im getting this exception only when i use xml based and annotation based hibernet together. that means, in config file, i have mapping for hbm as well as mapping for the classes for annotated class.

    but seperately they work as expected. Please suggest me if there anything im missing

    Reply
  3. you can find some more details in the below link,”http://javadomain.in/solved-an-annotationconfiguration-instance-is-required-to-use-mapping-class/”

    Reply
  4. After changing Configuration to AnnotationConfiguration, I am facing below exception-
    Exception in thread “main” java.lang.NoSuchFieldError: sqlResultSetMappings

    Please let me know what needs to be done?

    Thanks,
    Anup

    Reply
  5. After study a few of the blog posts on your website now, and I really like your means of blogging. I bookmarked it to my bookmark website checklist and will be checking again soon. Pls check out my website online as nicely and let me know what you think.

    Reply
  6. Mr Mkyong, Your tutorials rock, “Thank you” is not enough, I was wondering If you could take me up on my offer of dinner 😉

    Reply
  7. Hi
    I am also facing same problem.
    When i use AnnotationConfiguration it says ‘type AnnotationConfiguration is deprecated’
    & when i switch to use configuration it gives error
    org.hibernate.MappingException: An AnnotationConfiguration instance is required to use mapping class

    Reply
  8. Hi
    I am also facing same problem.
    When i use AnnotationConfiguration it says ‘type AnnotationConfiguration is deprecated’
    & when i switch to use configuration it gives error
    org.hibernate.MappingException: An AnnotationConfiguration instance is required to use <mapping class="”>
    please suggest if there is any alternate.

    Reply
  9. IS the annotations library compatible with Hibernate 3.2.5?

    Which version are you guys using?

    Reply
  10. It solved my problem, the following is syntax used

    //sessionFactory = new Configuration().configure().buildSessionFactory();
    sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();

    Reply
    1. import org.hibernate.SessionFactory;
      import org.hibernate.cfg.Configuration;

      // sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
      sessionFactory = new Configuration().configure().buildSessionFactory();

      Reply
  11. Hi. AnnotationConfiguration is deprecated now. How to use it with Configyration?

    Reply
  12. this solved my immediate problem, thx for posting it!

    Reply
        1. I still got that error and on top of that AnnotationConfiguration is deprecated.

          What do you use?

          Reply
          1. I am also facing similar problem

      1. SessionFactory sf=new AnnotationConfiguration().configure().buildSessionFactory();

        i am getting xception in thread “main” org.hibernate.MappingException: An AnnotationConfiguration instance is required to use

        Reply

Leave a Comment

Your email address will not be published. Required fields are marked *