Spring 整合 Hibernate 專案啟動時拋出 Error creating bean with name 'vipService',堆疊追蹤顯示根因為 org.hibernate.MappingNotFoundException: resource: bean/program.hbm.xml not found。本文記錄排查過程與解決方案。
Caused by: org.hibernate.MappingNotFoundException: resource: bean/program.hbm.xml not found
at org.hibernate.cfg.Configuration.addResource(Configuration.java:799)
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:2344)
...
at util.HibernateUtil.buildSessionFactory(HibernateUtil.java:11)
at business.VipBusinessHibernate.<init>(VipBusinessHibernate.java:21)
Hibernate 在建立 SessionFactory 時,依據配置檔(hibernate.cfg.xml)載入對映檔(.hbm.xml)。錯誤訊息明確指出:找不到 classpath 下的 bean/program.hbm.xml 資源。
<mapping resource="bean/program.hbm.xml"/> 指定的相對路徑與實際檔案位置不符。.hbm.xml 放置於 src/main/java 但建構工具未將非 Java 檔案複製至 target/classes。Program.hbm.xml ≠ program.hbm.xml。program.hbm.xml,記錄其相對於 src/main/resources 或 src/main/java 的路徑。src/main/resources/bean/program.hbm.xml,則配置應為 <mapping resource="bean/program.hbm.xml"/>;若在 src/main/java/com/example/bean/program.hbm.xml,則為 <mapping resource="com/example/bean/program.hbm.xml"/>。<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.hbm.xml</include>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
mvn clean compile 或 IDE 的 Rebuild,確認 target/classes/bean/program.hbm.xml 存在。@Entity、@Table)可完全避免 .hbm.xml 路徑維護問題。-verbose:class 或除錯 Configuration.addResource 可觀察實際載入路徑。修正路徑並確保資源檔正確打包後,重新啟動應用程式,vipService Bean 即可順利建立,系統恢復正常。