在Web項目中,我們經常會設計一些與界面相對應的JavaBean作為Entity,而為了兼容前台傳入的空值,有些字段我們會用包裝類型而不是基本類型。可是往往我的Entity已經設計完成,很多時候我們會在原來的Entity基礎上修改字段返回值類型,而不是刪去重寫。於是問題就來了,一些大意的同學僅僅把屬性的基本類型(如long)改為包裝類型(如Long),而並沒有將setter/getter的類型一起修改。
這種情況會報錯,而且報的錯經常會讓人摸不着頭腦。下面列舉了一種情況,是利用com.fasterxml.jackson將Entity序列化為Json字符串時出現上述疏忽報的錯誤:
com.fasterxml.jackson.databind.JsonMappingException: (was java.lang.NullPointerException) (through reference chain: Student["sid"])
我的Entity如下:
public class Student { private Long sid; private String name; public long getSid() { return sid; } public void setSid(long sid) { this.sid = sid; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
這種Entity的寫法會在不同場合報不同的錯誤,本文僅列出這一種情況,后續遇到再補充。
共勉!
Edit by Jimmy
2014.09.18