मेरे पास एक साधारण नियंत्रक है जो एक उपयोगकर्ता ऑब्जेक्ट को लौटाता है, इस उपयोगकर्ता के पास एक विशेषता निर्देशांक है जिसमें हाइबरनेट संपत्ति FetchType.AZY है।
जब मैं इस उपयोगकर्ता को प्राप्त करने की कोशिश करता हूं, तो मुझे उपयोगकर्ता ऑब्जेक्ट प्राप्त करने के लिए हमेशा सभी निर्देशांक लोड करने होते हैं, अन्यथा जब जैक्सन उपयोगकर्ता को क्रमबद्ध करने की कोशिश करता है तो अपवाद को फेंकता है:
com.fasterxml.jackson.databind.JsonMappingException: प्रॉक्सी को प्रारंभ नहीं कर सका - कोई सत्र नहीं
यह जैक्सन के कारण इस अधूरे ऑब्जेक्ट को लाने की कोशिश कर रहा है। यहाँ वस्तुएं हैं:
public class User{
@OneToMany(fetch = FetchType.LAZY, mappedBy = "user")
@JsonManagedReference("user-coordinate")
private List<Coordinate> coordinates;
}
public class Coordinate {
@ManyToOne
@JoinColumn(name = "user_id", nullable = false)
@JsonBackReference("user-coordinate")
private User user;
}
और नियंत्रक:
@RequestMapping(value = "/user/{username}", method=RequestMethod.GET)
public @ResponseBody User getUser(@PathVariable String username) {
User user = userService.getUser(username);
return user;
}
जैक्सन को यह बताने का एक तरीका है कि अनफ़िट की गई वस्तुओं को अनुक्रमित न करें? मैं 3 साल पहले पोस्ट किए गए अन्य उत्तरों को देख रहा हूं जो जैकसन-हाइबरनेट-मॉड्यूल को लागू कर रहे हैं। लेकिन शायद इसे एक नए जैकसन फीचर के साथ हासिल किया जा सकता है।
मेरे संस्करण हैं:
- वसंत 3.2.5
- हाइबरनेट 4.1.7
- जैक्सन 2.2
अग्रिम में धन्यवाद।