錯誤現象
Hibernate 測試時報「構造器找不到」異常,實體類、映射文件、配置文件均已提供截圖。
根本原因
數據庫表結構與實體類/映射文件(.hbm.xml)定義的字段不一致。 Hibernate 啟動時根據映射文件反射實體類構造器,若字段類型、名稱、主鍵策略不匹配,會拋出 `InstantiationException`/`PropertyNotFoundException` 等,表現為「構造器找不到」。
排查清單
- 主鍵生成策略:`` 需與 DB 主鍵自增/序列一致。
- 字段名/類型:`` 中 `column` 必須與 DB 列名完全一致(大小寫敏感視 DB 而定),`type` 對應 Java 類型。
- 關聯映射:``/`` 的 `column`、`class`、`cascade`、`lazy` 需正確。
- 實體類構造器:必須有**無參構造器**(public/protected),且非 final。若有全參構造器,仍保留無參。
- 包名/類名:映射文件 `` 需與實體類全限定名一致。
調試步驟
- 開啟 Hibernate SQL 日誌(`show_sql=true`、`format_sql=true`),看生成的 DDL/查詢。
- 用 `SchemaExport`/`SchemaUpdate` 自動生成表結構對比。
- 檢查控制台完整異常堆疊,定位具體字段/映射行。