为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

三国纷争 2022-08-03 12:52:59
我是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;@Entitypublic 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文件的位置。
查看完整描述

2 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

您可以通过注释(我更喜欢这个)或在XML文件中定义实体映射。根据错误,它正在查找xml文件Person.hbm.xml在文件夹HibernateExposed中(从您的配置文件中查看它)。因此,您需要创建具有实体名称和所有属性的Person.hbm.xml文件。例如:<mapping resource="HibernateExposed/Person.hbm.xml" />


<entity-mappings>

    <entity class="your_package_name.Produto" name="Produto">        

        <attributes>

            <property name="nome"

                type="value"

                not-null="value"

                update="value"/>

//put all other attributes from Produto class

        </attributes>

   </entity>

</entity-mappings>

但在这种情况下,您不需要使用注释。如果要使用批注,请更改为类似@Entityhibernate.cfg.xml<mapping class="your_package_name.Produto"/>


查看完整回答
反对 回复 2022-08-03
?
炎炎设计

TA贡献1808条经验 获得超4个赞

我解决了使用hibernate.properties文件而不是hibernate.cfg.xml配置hibernate的问题。

我在内存中使用了H2,使用了jdbc URL(H2中的默认值之一):jdbc:h2:mem:test,在hibernate.properties上配置。(此链接中的更多内容: http://www.h2database.com/html/features.html#database_url)

我已经按照本教程的所有步骤进行解决方案:https://www.youtube.com/watch?v=MA4tM17H6_M


查看完整回答
反对 回复 2022-08-03
  • 2 回答
  • 0 关注
  • 114 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信