尝试获取具有多对多关系的对象时遇到问题。我有一张桌子上的航班,上面有机场目的地/始发地和航空公司。机场有其国家,而航空公司有其国家。问题是机场和航空公司的国家/地区相同。杰克逊只写一个国家作为对象,而另一国只写其ID。这是我得到的JSON:
[{
"flightId": 1,
"airportByFkAirportOrigin": {
"airportId": 1,
"country": {
"countryId": 1,
"name": "Croatia"
},
"city": "Zagreb",
"name": "Pleso"
},
"airportByFkAirportDest": {
"airportId": 2,
"country": {
"countryId": 2,
"name": "Germany"
},
"city": "Frankfurt",
"name": "Flughafen Frankfurt am Main"
}
"airline": {
"airlineId": 1,
"country": 1,
"name": "Croatia Airlines",
"callsign": "Croatia",
}
"date": "2015-05-20",
"timeDepartScheduled": "21:00",
"timeArriveScheduled": "22:30",
}]
正如您在“机场起源”中所看到的,写入了名为“克罗地亚”的“国家”对象,并写入了与“机场目的地”对象的名称“德国”相同的对象。但是对于“航空公司国家”对象,也应该是“克罗地亚”,但由于某种原因,只会写入其ID。为了清楚起见,在机场和航空公司中的两个Country对象上的抓取设置都设置为EAGER,并且在调试时我可以看到休眠状态为包括Airline在内的所有对象都返回了Country对象,但是由于某些原因,Jackson决定在以下情况下在Airline中删除该对象转换为JSON。有人知道为什么吗?
Jackson仅在对象首次出现时才编写整个对象的原因是@JsonIdentityInfo批注,该批注用于处理循环对象图。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句