java - Hibernate 的无效映射

标签 java hibernate

我在尝试在 netbeans 上使用带有 java 的 Hibernate 4.3.x 时遇到了异常,该异常是:

Exception in thread "main" java.lang.ExceptionInInitializerError
    at teste.ConectaJavaDB.main(ConectaJavaDB.java:17)
Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from resource model/Equipe.hbm.xml
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXml(Configuration.java:3764)
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXmlQueue(Configuration.java:3753)
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3741)
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1410)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1844)
    at conexao.HibernateUtil.buildSessionFactory(HibernateUtil.java:25)
    at conexao.HibernateUtil.<clinit>(HibernateUtil.java:14)
    ... 1 more
Caused by: org.hibernate.DuplicateMappingException: Duplicate class/entity mapping model.Equipe
    at org.hibernate.cfg.Configuration$MappingsImpl.addClass(Configuration.java:2837)
    at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:178)
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXml(Configuration.java:3761)
    ... 7 more

(第二个错误说的是重复映射,但我没有映射两次) 通过阅读异常,可以看出问题出在 Equipe 类的映射 xml 中,该 XML 包含:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="model">
  <class name="model.Equipe" table="equipe">
    <id name="id" type="int" column="ID" >
      <generator class="increment"/>
    </id>
    <property name="nome"/>
    <property name="dataNascimento"/>
    <property name="email"/>
    <property name="enderecoWeb"/>
    <property name="fone"/> 
  </class>
</hibernate-mapping>

还有类(class):

    package model;
    import java.util.Date;

    public class Equipe {

        private int id;
        private String nome;
        private Date dataNascimento;
        private String email;
        private String enderecoWeb;
        private String fone;

   [..]getters and setters[..]

hibernate .cgf

    <?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.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mysql?zeroDateTimeBehavior=convertToNull</property>
    <property name="hibernate.connection.username">app</property>
    <property name="hibernate.connection.password">app</property>
    <property name="hibernate.current_session_context_class">thread</property>
    <property name="hibernate.hbm2ddl.auto">update</property>

    <mapping class="model.Jogador"/>
    <mapping resource="model/Equipe.hbm.xml"/>
  </session-factory>
</hibernate-configuration>

我似乎找不到错误,漏洞代码已发布在上面的Bitbucket上,谢谢!

孔代码:https://bitbucket.org/angelorodem/progapl_ii_272278_2015/src

最佳答案

您调用了 configuration.configure() 两次。删除第二个调用,或者只需复制粘贴以下代码:

    Configuration configuration = new Configuration();
    configuration.configure();
    serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
    sessionFactory = configuration.buildSessionFactory(serviceRegistry);
    return sessionFactory;

关于java - Hibernate 的无效映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32256066/

相关文章:

java - NetBeans - 新的 Java Web 项目 - html 与 jsp

java - 帮我选择Java Web框架

java - 如何在使用 @RunWith(SpringJUnit4ClassRunner.class) 执行任何测试之前 Autowiring Junit 类中的属性

java - 在 Hibernate 中使用 PreUpdate 监听器时记录未更新

java - 如何在Hibernate中启用二级缓存

java - 基于新的 List<MyClass> 集合更新 List<MyClass> 集合

java - 将 4 位军用时间转换为标准 12 小时时间格式

java - 对 getSingleResult 使用可选

sql - HQL 中的 IsNull 是什么?

java - 在 Spring Boot JPA 中使用 Hibernate 过滤器