有個原則就是實體類還是controller入參都應該是 包裝類型

問題說明

我在使用JPA作為項目的ORM框架的時候,在分頁查詢中,不管咋樣使用查詢不出來數據,然後發現Hibernate構建的查詢SQL中,在where子句中帶上了createTime=0這個條件。這樣肯定是過濾掉了全部數據了。
在這裡插入圖片描述

疑問:為啥這裡Hibernate會在SQL中 自動加上這個createTime=0 這個條件呢?很奇怪~~

直到我看見 在這裡實例化的對象中,
在這裡插入圖片描述

對象的createTime屬性我定義的是 int 這個基本數據類型。

恍然大悟

實例化對象的時候,基本數據類型都會有初始值的,比如這裡的int初始值 不就是 0嘛,然後Hibernate 就會將對象中不為null的欄位,都添加在where 後面作為條件。如下
在這裡插入圖片描述

解決:

我把createTime欄位的類型改為 包裝類型interger 就可以了。

然後,我把這個情況和我的小夥伴講了,
在這裡插入圖片描述
在這裡插入圖片描述

我又查了阿里巴巴開發規範,哎~~果真
在這裡插入圖片描述

特寫此文,讓我自己長記長性把!無奈自己比較菜,加油加油吧!