首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

MyBatis/Hibernate 基本類型屬性 Null 值賦值異常:Primitive Setter 不接受 Null 解決方案

     編輯:Java 綜合教學

異常現象

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 等業務默認值

方案三:數據庫層面 NOT NULL + 默認值

ALTER TABLE user MODIFY age INT NOT NULL DEFAULT 0;

基本類型 vs 包裝類型對照

基本類型包裝類型默認值可為 null
intInteger0否/是
longLong0L否/是
doubleDouble0.0否/是
booleanBooleanfalse否/是

最佳實踐建議

  1. 實體類屬性優先用包裝類型,與數據庫 NULL 語義一致
  2. 基本類型僅用於確定非空的業務字段(如主鍵、狀態碼)
  3. 數據庫設計階段明確 NOT NULL 約束,減少應用層判空
  4. 使用 Lombok @Builder 或構造器確保對象創建時必要字段非空
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved