2012-10-29 55 views
0

我們正在將一個大型數據庫從一個DBMS轉換爲另一個。我們主要使用JDBC來完成這項工作,但有一些Hibernate調用混合在一起。到目前爲止,數據庫的一小部分需要7個小時才能遷移。爲了減輕這一點,我們決定我們可以同時遷移數據庫的不同部分。我們重寫了遷移例程以使用線程。在涉及Java堆空間問題並確保我們在每個線程中都有單獨的JDBC和Hibernate會話之後,我們發現自己有最後一個問題:我們正在獲取未知實體:無處不在的異常。我們正在創建SchemaExport並在任何遷移線程啓動之前執行它。我們缺少什麼?未知實體在多線程休眠

+4

您可以發佈該異常的完整堆棧跟蹤? –

+0

我們解決了我們自己的問題。我們沒有在創建模式導出的第一部分中創建會話。一旦我們這樣做了,其他所有事情都會順利進行。 –

回答

1

顯然,未知實體是當hibernate不知道異常中引用的類時發生的異常。 例如,針對Myclass類:

Exception in thread "main" org.hibernate.MappingException: Unknown entity: data.Myclass 

你需要有一個<classname>.hbm.xml文件,它對應於Hibernate映射,爲了必須由Hibernate知道每一個類,並且還引用爲資源這些文件在hibernate的主要配置文件中。 在hibernate.cfg.xml,這是爲了讓Hibernate瞭解類Myclass行:

<mapping resource="Myclass.hbm.xml" />