數據庫數據映射實體類報錯:Null value was assigned to a property of primitive type setter

在查詢數據中的數據封裝到實體類時,出現類型不正確錯誤

錯誤信息

org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter of com.agenda.api.entity.M2FEntrance.inputtype

根據異常信息的提示和查詢的解決方案來看:數據庫的數據的類型和當前實體類中映射的類型不一致,將數據庫中的類型和實體類中的類型設置爲一致

但是經過查看,數據庫中的數據類型和實體類中定義的數據類型一致,Oracle數據庫中爲number類型,在實體類中定義的數據類型爲int

這樣看起來是沒有問題的,但是!!!如果數據庫中該字段值有null的存在呢?
經過查看數據庫中的記錄數據,真實null值導致

問題原因

經過查看,數據庫中該字段中有爲null的數據,而實體類中的字段類型爲int基本類型怎麼能接收封裝null呢,所以需要使用Integer來定義實體類中的字段類類型。

解決方案

在實體類中的inputType屬性的類型爲int,因爲數據庫中有null值。

  • 第一種方式:
    修改int基本類型爲包裝類Integer
  • 第二種方式:
    將數據庫中的null值改爲''或者0來表示null即可

tips:在數據庫中的字段中最好不要有null的存在,可以設置字段的默認值或者通過0或者空字符串表示,不僅會有這種類型的影響,null值也會佔用更多的內存空間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章