Hibernate查詢部分字段(含外鍵)出錯,報空指針異常解決方法:
假設當前表結構如下:
food表字段有foodid,name,外鍵businessid,外鍵type
business表字段有,name,外鍵type
type表字段有id,name,foodid
Hibernate生成的對應POJO分別是Food,Business,Type
需要查詢food表部分字段,如name和外鍵businessid
則可在Food類中添加只有相應成員變量的構造方法,Food(String name,Business business)
使用hql語句
select new Food(name,business) from Food where foodid=1
以上可以順利查詢,但是如果調換name和順序
使用Food(Business business,String name)
hql語句
select new Food(business, name) from Food where foodid=1
就會報空指針異常
這其實是因為外鍵的關聯表Business中也含有叫name的字段,所以會發生錯誤,此時只要給查詢表使用別名就可以解決了.
正確的語句:
select new Food(f.business, f.name) from Food f where foodid=1
同理,如果也查詢外鍵type, 那麼:
錯誤的語句:
select new Food(name,business,type) from Food where foodid=1
正確的語句:
select new Food(f.name,f.business,f.type) from Food f where f.foodid=1
Hibernate3.1.2_中文文檔PDF http://www.linuxidc.com/Linux/2016-02/128462.htm
Hibernate學習入門教程 http://www.linuxidc.com/Linux/2015-08/121498.htm
在Hibernate中開啟日志 http://www.linuxidc.com/Linux/2015-07/120499.htm
Hibernate+JUnit測試實體類生成數據庫表 http://www.linuxidc.com/Linux/2015-07/120161.htm
Hibernate整體理解 http://www.linuxidc.com/Linux/2014-07/104405.htm
Hibernate的映射機制 http://www.linuxidc.com/Linux/2014-12/110265.htm
Hibernate 的詳細介紹:請點這裡
Hibernate 的下載地址:請點這裡