org.hibernate.InvalidMappingException:

悠悠隱於市發表於2011-01-05

我有一個JSF+spring+hibernate的專案,之前執行都是正常的,今天斷網的情況下重啟tomcat,發現程式無法執行了。

主要報錯是:
java.lang.ExceptionInInitializerError

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mySessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.InvalidMappingException:

Could not parse mapping document from input stream

 

解決方案:

問題解決,是資料表的配置檔案(*.hbm.xml)的標頭檔案的錯,原來的程式碼是:
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"
http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
當我把hibernate升級到3.0後,這些資料表的配置檔案沒有改,所以聯網的時候,專案會在
網路上查詢3.0的dtd檔案;而斷網的時候,專案找不到相應的dtd檔案,就會報錯。
之前我只考慮了spring的配置檔案(applicationContext.xml),而忽略了資料表的配置檔案..
所以只要將上面程式碼中的2改成3就可以了..

 

 

斷網..會發生錯誤.. 因為找不到3.0的dtd檔案,. 不斷網,機會查詢3.0的dtd 檔案.