有個原則就是實體類還是controller入參都應該是 包裝類型
- 2020 年 4 月 4 日
- 筆記
問題說明
我在使用JPA作為項目的ORM框架的時候,在分頁查詢中,不管咋樣使用查詢不出來數據,然後發現Hibernate構建的查詢SQL中,在where子句中帶上了createTime=0這個條件。這樣肯定是過濾掉了全部數據了。
疑問:為啥這裡Hibernate會在SQL中 自動加上這個createTime=0 這個條件呢?很奇怪~~
直到我看見 在這裡實例化的對象中,
對象的createTime屬性我定義的是 int 這個基本數據類型。
恍然大悟
實例化對象的時候,基本數據類型都會有初始值的,比如這裡的int初始值 不就是 0嘛,然後Hibernate 就會將對象中不為null的欄位,都添加在where 後面作為條件。如下
解決:
我把createTime欄位的類型改為 包裝類型interger 就可以了。
然後,我把這個情況和我的小夥伴講了,
我又查了阿里巴巴開發規範,哎~~果真
特寫此文,讓我自己長記長性把!無奈自己比較菜,加油加油吧!