首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

EJB 3.0 / Hibernate 查詢 Boolean 屬性踩坑記:映射檔大小寫陷阱

     編輯:Java 相關知識

現象

實體類 HibernateBooleanDemo 有屬性 enabled(boolean),對應資料表欄位 isEnabled。HQL 寫 where isEnabled=false 正常,改成 where enabled=false 拋出 could not resolve property: enabled。

錯誤堆疊關鍵

org.hibernate.QueryException: could not resolve property: enabled of: org.acman.demo.HibernateBooleanDemo

根因分析

使用 HibernateSynchronizer 自動生成映射檔(.hbm.xml)時,<property name="Enabled" ...> 的 name 屬性**首字母大寫**,導致 Hibernate 無法識別屬性 enabled。其他型別(String、Long 等)似乎對大小寫不敏感,唯獨 boolean/Boolean 類型嚴格要求屬性名**小寫開頭**。

解決方案

  1. 手動修正 .hbm.xml:<property name="enabled" column="isEnabled" type="boolean"/>
  2. 或改用 Annotation:@Column(name="isEnabled") private boolean enabled; 避免 XML 映射檔維護。
  3. 檢查代碼生成工具模板,確保 getter/setter 對應的屬性名符合 JavaBean 規範(小寫開頭)。

最佳實踐

  • 優先使用 JPA Annotation(@Entity、@Column),減少 XML 映射檔出錯機率。
  • Boolean 型別欄位命名建議統一為 isXxx(資料庫)對應 xxx(實體屬性),並在映射中顯式指定 column。
  • 單元測試覆蓋 HQL 查詢,及早發現屬性解析問題。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved