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

Hibernate加载cfg中未映射的实体

柯浩壤
2023-03-14

我使用Hibernate已经有一段时间了,而且非常成功。然而,我昨天遇到了一个问题,这里的答案将在将来节省大量调试时间。

我忘了在我的hibernate中添加hibernate映射。新实体的cfg。

当我试图加载这个实体时,我本以为会得到某种运行时异常,但它却什么也没加载,继续运行,好像一切都很好。

我正在使用以下代码加载实体。

protected List<T> findByCriteria(Session session, Criterion... criterion) {
    Criteria crit = session.createCriteria(getPersistentClass()); /getPersistentClass returns a Class<T>
    for (Criterion c : criterion) {
        crit.add(c);
    }
    return crit.list();
}

我想一个错误,如果我尝试加载一个实体,没有映射在我的hibernate.cfg.

有办法做到这一点吗?

共有2个答案

齐高阳
2023-03-14

最后,我放弃了hibernate.cfg中的映射,并在为我的SessionFactory构建配置对象时添加了以下方法。

private static void addAnnotatedEntityClasses(Configuration configuration) {
    Reflections reflections = new Reflections("com.mypackage");
    Set<Class<?>> classes = reflections.getTypesAnnotatedWith(Entity.class);

    logger.debug("Adding Hibernate Mapping for: ");
    for (final Class<?> clazz : classes) {
        logger.debug(clazz.getName());
        configuration.addAnnotatedClass(clazz);
    }
}

这将在我的项目中查找带有实体注释的所有类,并添加映射。

为了简单起见,这使用了反射库。可在此处找到:

<dependency>
    <groupId>org.reflections</groupId>
    <artifactId>reflections</artifactId>
    <version>0.9.9-RC1</version>
</dependency>
施海
2023-03-14

您正在j2EE服务器中运行代码。如前一个答案所示,您是否在实体类上使用注释?如果是,请尝试删除实体注释。

 类似资料:
  • 我在Kotlin-vertx项目中配置了Hibernate,我设法设置了所有内容,但当我运行HQL查询时,它会输出: 提前谢了。

  • 在web应用程序上,我们使用Spring 3.2和Hibernate 4.1.1,并实现了一个类似插件的架构。插件可以在运行时添加和删除。对于每个模块,我们定义了一个单独的类加载器,并在spring上创建了单独的子应用程序上下文。完整的配置是使用注释完成的,不再需要对beans进行XML配置。 Spring Hibernate配置类 现在的问题是:一些插件包含自己的实体(DAO)类,这些类在运行时

  • 我想映射类主题到主题表。 主题。JAVA 主题。哈佛商学院。xml 冬眠cfg。xml 我正在读取csv文件的内容,并希望使用以下代码将其插入数据库。 管理ata.java 我得到以下错误 线程“main”组织中出现异常。冬眠MappingException:未知实体:组织中的主题。冬眠impl。SessionFactoryImpl。getEntityPersister(SessionFactor

  • 帮助我解决我的问题...当我使用方法时,我在映射方面遇到了问题。 型号:Bus Bus\U id pk号 驱动程序driver_idpk名称 巴士司机bus_idfkdriver_idfk 巴士 驾驶员 1级-驾驶员: 2类-总线公共类BusDAOImpl实现BusDAO{ 我的映射: 主类: } hibernate.cfg 工厂 HibernateUtil: 错误文本:

  • 我正在使用Struts、Spring和Hibernate与mysql&Eclipse Kepler的集成进行在线考试项目。在Registration.jsp页面中提交值时,我试图将这些值存储在同一个数据库中的两个不同的表(user_details,address)中。我可以将它们存储在数据库中,但我不能获取user_id,这是地址表的外键。user_id是user_details表中的主键,除了地

  • 是否可以在不映射一对多关系的情况下设置级联? 我有两个实体: 和 如果我试图删除一个用户,并且存在该用户的任何记录,那么由于外键的原因,它显然会失败。我想在删除用户之前删除该用户的所有记录。我看到两种选择: > 映射s为关系中的,并设置。 在删除用户之前手动删除它们 有没有第三个选项,如何在用户实体中设置无映射记录的级联?