0

我有一个 Hibernate 项目。我尝试读取配置文件 hibernate.cfg 并收到此错误:

 Error creando una factoria de session.org.hibernate.MappingException: An AnnotationConfiguration instance is required to use <mapping class="com/david/Categoria"/>
jun 04, 2013 10:19:26 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: El Servlet.service() para el servlet [ControladorLibros] en el contexto con ruta [/App01HTML] lanzó la excepción [La ejecución del Servlet lanzó una excepción] con causa raíz
org.hibernate.MappingException: An AnnotationConfiguration instance is required to use <mapping class="com/david/Categoria"/>
    at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1524)
    at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1479)
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1458)
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1432)
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1352)
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1338)
    at com.david.HibernateHelper.buildSessionFactory(HibernateHelper.java:13)

我的配置文件很简单:

<?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="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost/arquitecturajava</property>
        <property name="connection.username">root</property>
        <property name="connection.password">root</property>
        <property name="connection.pool_size">5</property>
        <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
        <property name="show_sql">true</property>
        <mapping class="com/david/Categoria"></mapping>
        <mapping class="com/david/Libro"></mapping>
    </session-factory>
</hibernate-configuration>

不接受映射类线。

我创建类似于此代码的 de 配置:

private static SessionFactory buildSessionFactory() 
    {
        try
        {

            return new Configuration().configure().buildSessionFactory(); 
        }
        catch (Throwable ex) 
        {
            System.err.println("Error creando una factoria de session." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

我的项目库是:

在此处输入图像描述

任何想法?

4

2 回答 2

0

我认为您的类路径中需要 Hibernate Annotation 库。您可以手动添加它,从 Hibernate 站点下载它,或者您可以添加这个 Maven 依赖项:

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

然后使用类AnnotationConfiguration而不是 Configuration 来配置您的sessionFactory.

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

然后你必须更正类的限定名称,正如@JB Nizet 在他的评论中建议你的那样。

我认为这将解决您的问题。

编辑:对不起,我认为您的类路径中有注释库,只需使用AnnotationConfiguration该类而不是Configuration在构建sessionFactory.

于 2013-06-04T08:55:33.867 回答
0

问题在于图书馆。这是解决方案:

在此处输入图像描述

非常感谢 Eternay 和 JB Nizet。

于 2013-06-04T09:33:03.370 回答