org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter of ...
或 MyBatis 映射時類似報錯。
實體類屬性定義為基本類型(int、long、boolean 等),數據庫字段允許 NULL,查詢結果為 NULL 時,框架嘗試調用 setter 傳入 null,基本類型無法接收 null 導致異常。
// 錯誤
private int age;
// 正確
private Integer age; // 可為 null
private int age = 0; // 或 -1 等業務默認值
ALTER TABLE user MODIFY age INT NOT NULL DEFAULT 0;
| 基本類型 | 包裝類型 | 默認值 | 可為 null |
|---|---|---|---|
| int | Integer | 0 | 否/是 |
| long | Long | 0L | 否/是 |
| double | Double | 0.0 | 否/是 |
| boolean | Boolean | false | 否/是 |
NULL 語義一致NOT NULL 約束,減少應用層判空@Builder 或構造器確保對象創建時必要字段非空