當不存在實體之間級聯懶加載狀況下,直接把實體放在Model裏就能夠,如圖java
可是若是存在實體建級聯的狀況呢?git
@JsonIgnoreProperties(ignoreUnknown=true) public class Course extends IdEntity { private static final long serialVersionUID = 2118439396249691137L; private String name; private User createBy; private List<CourseTag> courseTags; public String getName() { return name; } public void setName(String name) { this.name = name; } @OneToMany(fetch = FetchType.LAZY, mappedBy = "course",cascade = CascadeType.ALL) public List<CourseTag> getCourseTags() { return courseTags; } public void setCourseTags(List<CourseTag> courseTags) { this.courseTags = courseTags; } @ManyToOne(fetch = FetchType.LAZY) public User getCreateBy() { return createBy; } public void setCreateBy(User createBy) { this.createBy = createBy; } }
若是此時之間把course放在model裏就會報錯(上面提示的錯誤)github
解決這種有幾種方式:spring
1)jackson-datatype-hibernatejson
具體教程連接:https://github.com/FasterXML/jackson-datatype-hibernatemvc
沒有深刻研究,大概就是忽略懶加載的實體,因此返回的course實例裏面courstags爲空app
2)結婚1)和實際報錯誤的提示(to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)框架
由於springmvc默認使用jackson,jackson又是使用默認序列化規則,根據提示修改下規則便可
fetch
這種狀況,會把全部級聯的實體都實例化this
3)換個思路,既然級聯實體實例化出問題,那就不實例化級聯實體
經過JsonIgnore忽略它,而後在controller中這樣處理
一樣也能夠達到能夠傳遞出相應信息的目的
4)不經過springmvc的Model容器返回,用Map做爲容器(據說的沒具體用過)
把course放在map裏面
Map map = new HashMap<String, Object>(); map.put("course", course); return new ResponseEntity(map, HttpStatus.ok);
最後說明一點:轉成json格式和hibernate是否懶加載沒有關係,是和第三方框架有關
前面三個我本身都試了,可是最後我本身選的是第三種,反正看你們根據本身的須要選擇,本身尚未研究透,先這樣吧。