2012-05-08 82 views
1

我試圖堅持一個非常簡單的類使用休眠。我是不是使用Spring,我是不是使用映射文件,只是明確註釋。使用javax.persistence.Entity而不是org.hibernate.Entity。儘管如此,當運行JUnit測試(位於與課堂不同的測試包中的測試)時,我得到testAddUser caused an ERROR: Unknown entity: restauracja.PersonalInfoJUnit測試,休眠和未知實體錯誤

我在做什麼錯?

UPDATE:這是我初始化我會話工廠:

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

顯示你如何配置它並在測試啓動器中使用它。 – yair

+0

在這裏,添加了一些代碼。 – IneQuation

回答

4

休眠通常具有它知道,並已調查類的集合用於註釋。我懷疑你需要將你的restauracja.PersonalInfo類添加到該集合中。例如,在我們的測試工具,我們做這樣的事情:

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

每個所使用的具體單元測試的類需要指定所有hibernate需求測試必須在該列表中的類。我懷疑類的列表可能在hibernate.cfg.xml文件中,您只需將缺少的類添加到該列表。

+0

附註:AnnotationConfiguration已被棄用,以支持配置。 – Jeremy

+0

嗯,不,我的'hibernate.cfg.xml'只包含方言(MySQL)配置(用戶,傳遞,數據庫)。我從數據庫模式工具中使用了NetBeans的自動類生成。 – IneQuation

+1

@IQIQuation在會話工廠創建之前,您是否嘗試過添加'cfg.addAnnotatedClass(restauracja.PersonalInfo.class);''? – Gray