今天在使用hibernate查詢的時候,遇到一個開始比較迷惑的問題。問題大概意思描述如下:
如數據表test,有test_name,home_addr等字段,對應的hbmh和pojo中,忘記新增屬性home_addr。
開始使用如下hql: from TestModel as t where t.testName=? and t.homeAddr = ?
運行出錯:提示沒有對應的homeAddr屬性。
把hql改成如下:  from TestModel as t where t.testName=? and home_addr=? 即可運行。
但如下hql:  from TestModel as t where t.test_name=? and home_addr=? 出錯了
    from TestModel as t where testName=? and home_addr=? 出錯了

結論如下:hql支持根據屬性和物理字段的混排,屬性可直接使用,或者用“pojo別名.屬性”,但物理字段只能直接使用,不能使用“pojo別名.物理字段”。如果使用pojo別名,則不能直接使用屬性,必須用“pojo別名.屬性”。
呵呵,繞了半天,有點意思。