错误“找不到映射 (资源):休眠暴露/Person.hbm.xml”

我是Hibernate的新手,我正在尝试使用IntelliJ Idea中的Maven在Java中创建一些应用程序。我在上面的标题中遇到了这个错误,Stack上相同问题的答案直到现在才帮助我。


这个文件“Person.hbm.xml”是什么。我必须创建它吗?一旦它是映射资源,Hibernate就不应该自己创建它吗?


当我运行我的小程序时,我收到此错误:


Exception in thread "main" org.hibernate.boot.MappingNotFoundException: Mapping (RESOURCE) not found : HibernateExposed/Person.hbm.xml : origin(HibernateExposed/Person.hbm.xml)

    at org.hibernate.boot.spi.XmlMappingBinderAccess.bind(XmlMappingBinderAccess.java:56)

    at org.hibernate.boot.MetadataSources.addResource(MetadataSources.java:274)

    at org.hibernate.boot.cfgxml.spi.MappingReference.apply(MappingReference.java:70)

    at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:412)

    at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:86)

    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:691)

    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:726)

    at Persistencia.HibernateUtils.<init>(HibernateUtils.java:10)

    at Main.Main.main(Main.java:16)

这是我的数据库配置类:HibernateUtils:


import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;


public class HibernateUtils {


    //Fábrica de sessões de banco de dados constante no padrão SINGLETON


    SessionFactory sessionFactory = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();


}

下面是我试图坚持的实体类:


import javax.persistence.Entity;

import java.sql.Date;


@Entity

public class Produto {



    private String nome;

    private int cod;

    private float valor;

    private Date dataValidade;


    protected Produto() {

    }


    public Produto(String nome, int cod, float valor, Date dataValidade) {

        this.nome = nome;

        this.cod = cod;

        this.valor = valor;

        this.dataValidade = dataValidade;

    }



项目结构,以及休眠.cfg.xml文件的位置。


三国纷争
浏览 115回答 2
2回答

慕仙森

您可以通过注释(我更喜欢这个)或在XML文件中定义实体映射。根据错误,它正在查找xml文件Person.hbm.xml在文件夹HibernateExposed中(从您的配置文件中查看它)。因此,您需要创建具有实体名称和所有属性的Person.hbm.xml文件。例如:<mapping resource="HibernateExposed/Person.hbm.xml" /><entity-mappings>&nbsp; &nbsp; <entity class="your_package_name.Produto" name="Produto">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; <attributes>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <property name="nome"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; type="value"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; not-null="value"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; update="value"/>//put all other attributes from Produto class&nbsp; &nbsp; &nbsp; &nbsp; </attributes>&nbsp; &nbsp;</entity></entity-mappings>但在这种情况下,您不需要使用注释。如果要使用批注,请更改为类似@Entityhibernate.cfg.xml<mapping class="your_package_name.Produto"/>

炎炎设计

我解决了使用hibernate.properties文件而不是hibernate.cfg.xml配置hibernate的问题。我在内存中使用了H2,使用了jdbc URL(H2中的默认值之一):jdbc:h2:mem:test,在hibernate.properties上配置。(此链接中的更多内容:&nbsp;http://www.h2database.com/html/features.html#database_url)我已经按照本教程的所有步骤进行解决方案:https://www.youtube.com/watch?v=MA4tM17H6_M
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java