在查詢數據中的數據封裝到實體類時,出現類型不正確錯誤
錯誤信息
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值也會佔用更多的內存空間。