我正在尝试使用Hibernate持久化一个非常简单的类。我不使用Spring,我不使用映射文件,只需普通注释。我上午使用javax.persistence.Entity
代替org.hibernate.Entity
。仍然,当运行JUnit测试(位于与类不同的包中,测试一个)时,我得到testAddUser caused an ERROR: Unknown entity: restauracja.PersonalInfo
。
我做错了什么?
更新:这是我初始化会话工厂的方式:
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();
}
答案 0 :(得分:4)
Hibernate通常有一个它知道的类集合,并且已经调查了注释。我怀疑您需要将restauracja.PersonalInfo
类添加到该集合中。例如,在我们的测试工具中,我们执行以下操作:
AnnotationConfiguration cfg = new AnnotationConfiguration();
for (Class<?> clazz : databaseConfig.getHibernateClasses()) {
cfg.addAnnotatedClass(clazz);
}
特定单元测试使用的每个类都需要指定hibernate
测试所需的所有类必须在该列表中。我怀疑类的列表可能在hibernate.cfg.xml
文件中,你只需要将缺少的类添加到该列表中。