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

About the Author

mkyong
Founder of Mkyong.com and HostingCompass.com, love Java and open source stuff. Follow him on Twitter, or befriend him on Facebook or Google Plus. If you like my tutorials, consider make a donation to these charities.

Comments

  • Soumi

    Thanks.. It helped!

  • http://javadomain.in Diva

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

  • Anup

    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

  • http://maedashika.jp/hide/2006/02/post-47.html#comments fashion

    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.

  • Faras

    Awesome website.. Superb content. :)

  • BrightSide

    Mr Mkyong, Your tutorials rock, “Thank you” is not enough, I was wondering If you could take me up on my offer of dinner ;-)

  • Febrie Subhan

    i think can add commit();

  • Saurabh Naik

    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

  • Saurabh Naik

    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.

  • http://http//gokhan.ozar.net Skyhan

    IS the annotations library compatible with Hibernate 3.2.5?

    Which version are you guys using?

  • Hassan

    thanks a lot .

  • Thiru Neela

    It solved my problem, the following is syntax used

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

    • H3nrique

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

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

  • Thiru Neela

    Very Useful, it solved my problem as well.

  • http://ezjava.wordpress.com ezjava

    Very useful post ! It helped a lot. Tks

  • hi

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

  • Reza

    Thank you! the second solution solved my problem…

  • George W. Bush

    this solved my immediate problem, thx for posting it!

  • Pingback: Hibernate Tutorials | Tutorials()

  • mini998

    Many thanks , u solved my problem

    • Eder

      Hi, how can you solve this problem.??

      • http://www.mkyong.com mkyong

        Hi bro, is the solution above “AnnotationConfiguration” not working?

        • Yolande

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

          What do you use?

          • Saurabh Naik

            I am also facing similar problem

      • sreenu

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

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