当前位置: 首页 > 知识库问答 >
问题:

如何修复Hibernate5的映射找不到异常?

皮弘博
2023-03-14

你好,我是hibernate的新成员,目前我正在尝试做一些实践中的事情。但有一些错误。

我尝试在我的项目中使用hibernate。我阅读了教程,并开始将Hibernate集成到我的java maven项目中。所以首先我添加了下一个依赖项:

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.0.6.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>5.0.6.Final</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>

下一步是将hibernate.cfg.xml文件添加到src/main/resources目录中。此文件如下所示:

<?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/testprojectdatabase</property>
    <property name="hibernate.connection.username">username_here</property>
    <property name="hibernate.connection.password">password_here</property>

    <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
    <property name="hibernate.c3p0.min_size">5</property>
    <property name="hibernate.c3p0.max_size">20</property>
    <property name="hibernate.c3p0.timeout">300</property>
    <property name="hibernate.c3p0.max_statements">50</property>

    <mapping resource="milkiv/mytestproject/models/UserInfo.hbm.xml"/>
  </session-factory>
</hibernate-configuration>

我还创建了UserInfomanager类,它类似于:

public class UserInfoManager implements ManagerAdd<UserInfo> {
    private final SessionFactory factory;

    public UserInfoManager() {
    factory = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
    }

    public int add(UserInfo user) {
    Transaction transaction = null;
    Integer userId = null;
    try (Session session = factory.openSession()){
        transaction = session.beginTransaction();
        userId = (Integer) session.save(user);
        transaction.commit();
    } catch (HibernateException he) {
        if (transaction != null) {
        transaction.rollback();
        }
    }
    return userId;
    }
}

当我尝试为add(userinfouser)方法创建测试时,它在工厂初始化时在userinfomanager构造函数上失败,原因是

未找到映射(RESOURCE):milkiv/mytestproject/models/userinfo.hbm.xml:原点(milkiv/mytestproject/models/userinfo.hbm.xml)

我将感谢任何想法,帮助和解释如何解决这个问题...

如果有人需要,请在@v.ladynev答案的评论中更新。

共有1个答案

田嘉澍
2023-03-14

我检查了你的方法,一切正常。

当您将userinfo.hbm.xml放在src/main/resources/milkiv/mytestproject/models/userinfo.hbm.xml中时

它将出现在

尝试在开头添加/

<mapping resource="/milkiv/mytestproject/models/UserInfo.hbm.xml"/>

更新

在开始时添加/并不重要,因为Hibernate会在ClassLoader加载之前删除它。因此,最有效的方法--在开始时不使用/

<mapping resource="UserInfo.hbm.xml"/>
 public UserInfoManager() {
        System.out.println(UserInfoManager.class
                .getResource("/milkiv/mytestproject/models/UserInfo.hbm.xml"));

        System.out.println(ClassLoader.getSystemClassLoader().getResource(
                "milkiv/mytestproject/models/UserInfo.hbm.xml"));
}
new UserInfoManager();
 类似资料:
  • 问题内容: 我有两个POJO,STOCK和STOCK_DETAILS(一对多关系)。我也有一个接口IAUDITLOG(具有两种方法)。我需要两个POJO都实现此接口,并想在这些方法中编写一些实现。但是,当我使用子类“ STOCKDETAILS”实现IAUDITLOG接口时,它将给出异常“您应具有setter属性” 股票分类: 库存明细类 IAUDITLOg界面: 堆栈跟踪: 任何人都可以让我知道吗

  • 我在我的类上收到三条错误消息,它说在、和上找不到符号。我该如何解决这个问题?我试图在对话框中打印出来,但这三个是唯一不起作用的。

  • 我收到这个错误:[错误]插件组织。阿帕奇。专家插件:maven surefire插件:2.12.4或其依赖项之一无法解析:找不到工件组织。阿帕奇。专家nexus xyz插件中的插件:maven surefire插件:jar:2.12.4 我试图运行maven与依赖:树,但我看不到surefire,我不知道为什么它正在寻找这个特定的版本2.12.4,这是没有指定在我的pom! 即使surefire插

  • 我有Xcode6.2测试版。正在尝试 在中产生 Xcrun:错误:找不到实用工具“simctl”,不是开发人员工具或在路径中

  • 我正在运行项目,出现错误“dyld:Symbol not found:__t0bowv”如何修复?谢谢...! 引用自: /users/letai/library/developer/coresimulator/devices/b5e16f1a-c17c-4c65-b743-73775c820891/data/containers/bundle/application/a7e06426-84f9-

  • map 0%reduce 0%15/02/03 07:30:28信息MapReduce.job:任务Id:尝试_1422885720829_0097_M_000000_0,状态:失败错误:java.lang.RuntimeException:java.lang.ClassNotFoundException:Class org.cnognizant.pr2.troublemapper在org.apa