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

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