java - JUnit 测试、Hibernate 和未知实体错误

标签 java hibernate junit

我正在尝试使用 Hibernate 来持久化一个非常简单的类。我使用Spring,我使用映射文件,只是普通注释。我正在使用javax.persistence.Entity 而不是org.hibernate.Entity。尽管如此,当运行 JUnit 测试(位于与类不同的包中,一个测试包中)时,我得到了 testAddUser caused an ERROR: Unknown entity: restauracja.PersonalInfo

我做错了什么?

更新:这是我初始化 session 工厂的方式:

private final static SessionFactory factory;
static {
    Configuration cfg = new AnnotationConfiguration().configure("hibernate.cfg.xml");
    factory = cfg.buildSessionFactory();
}

并运行测试:

@Test
public void testAddUser() {
    Session session = factory.openSession();
    Transaction tx = session.beginTransaction();

    PersonalInfo pi = new PersonalInfo("Jan", "Kowalski", "Krótka 6a", "Gniezno", 123456l);

    session.saveOrUpdate(pi);
    tx.commit();
    session.close();

}

最佳答案

Hibernate 通常有一个类的集合,它知道这些类并且已经研究过注解。我怀疑您需要将 restauracja.PersonalInfo 类添加到该集合中。例如,在我们的测试工具中,我们执行如下操作:

AnnotationConfiguration cfg = new AnnotationConfiguration();
for (Class<?> clazz : databaseConfig.getHibernateClasses()) {
    cfg.addAnnotatedClass(clazz);
}

特定单元测试使用的每个类都需要指定 hibernate 测试所需的所有类必须在该列表中。我怀疑类列表可能在 hibernate.cfg.xml 文件中,您只需将缺少的类添加到该列表即可。

关于java - JUnit 测试、Hibernate 和未知实体错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10505939/

相关文章:

hibernate - Hibernate3 支持 native 查询过滤器吗?

java - 从 hibernate 返回映射

spring - org.springframework.beans.factory.BeanCreationException : Error creating bean with name 'jedisClientPool' defined in class path resource

Java EE Tomcat DefaultServlet 扩展不适用于静态文件

java - 通过使用FileAppender如何清除以前的数据并写入新的数据?

java - Phonegap/Android (java) - 移动预先填充的 SQLite 数据库 + Assets 文件夹

java - 将 ArrayList 对象引用到其他 ArrayList 的对象

java - hibernate - org.hibernate.QueryException : could not resolve property:

java - 等待 JUnit 测试用例中测试的代码生成的所有线程

unit-testing - Selenium 和 jUnit 的第一步——有什么好的教程吗?