मैं RestEasy, Jboss 7 और EJB 3.1 के साथ काम कर रहा हूं। मैं एक विश्वसनीय वेब सेवा बना रहा हूं जो JSON प्रारूप में डेटा लौटाता है।@JsonIgnore और @JsonBackReference को अनदेखा किया जा रहा है
समस्या यह है कि मेरे पास मेरी इकाइयों में से एक पर @ManyToOne
संबंध है जो क्रमिकरण के दौरान अनंत पुनरावृत्ति का कारण बनता है। मैंने समस्या को ठीक करने के लिए जैक्सन के @JsonIgnore
और @JsonBackReference
एनोटेशन का उपयोग करने की कोशिश की लेकिन ऐसा लगता है कि उन्हें पूरी तरह अनदेखा किया जा रहा है और अनंत पुनरावृत्ति अभी भी हो रही है।
यह मेरा उपयोगकर्ता क्लास है:
@JsonManagedReference("role-User")
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "role")
public Set<User> getUsers() {
return this.users;
}
मैंने कहीं पढ़ा है कि मैं अपने आवेदन के साथ जैक्सन पंजीकरण करना होगा उपयोग करने के लिए सक्षम होने के लिए:
class User {
private String userId;
private Role role;
@Id
@Column(name = "\"UserId\"", unique = true, nullable = false, length = 30)
public String getUserId() {
return this.UserId;
}
public void setUserId(String UserId) {
this.UserId = UserId;
}
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "\"RoleId\"", nullable = false)
//I have tried @JsonIgnore without @JsonBackReference
@JsonIgnore
//I have tried @JsonBackReference without @JsonIgnore
//Also I have tried @JsonBackReference and @JsonIgnore together
@JsonBackReference("role-User")
public Role getRole() {
return this.role;
}
}
यह मेरी भूमिका कक्षा का एक हिस्सा है नियमित जैक्सबी एनोटेशन इसलिए मैंने कक्षा
@Provider
@Produces(MediaType.APPLICATION_JSON)
public class JacksonContextResolver implements ContextResolver<ObjectMapper> {
public JacksonContextResolver() {
ObjectMapper mapper = new ObjectMapper();
AnnotationIntrospector introspector = new JaxbAnnotationIntrospector();
mapper.getDeserializationConfig().setAnnotationIntrospector(
introspector);
mapper.getSerializationConfig().setAnnotationIntrospector(introspector);
}
public ObjectMapper getContext(Class<?> objectType) {
return objectMapper;
}
}
उपरोक्त के साथ समस्या 01 हैबहिष्कृत है।
करें: किसी भी विचार क्यों जैक्सन एनोटेशन अनदेखा किया जा रहा
- आप है?
- मैं जैक्सन के बजाय नियमित जेएक्सबी एक्सएमएल एनोटेशन का उपयोग कैसे कर सकता हूं?
JaxbAnnotationIntrospector()
के बजाय मैं क्या उपयोग कर सकता हूं?
इनमें से किसी भी प्रश्न का उत्तर सराहना की है, धन्यवाद।
अद्यतन:
अभी के लिए मैं resteasy-jackson-provider
बाहर रखा गया है jboss-deployment-structure.xml
का उपयोग कर और मैं बोझ गिराना बजाय उपयोग कर रहा हूँ। मैं अभी भी जानना चाहता हूं कि मैं जैक्सन का उपयोग कैसे कर सकता हूं!
@GeeKh कृपया उपर्युक्त सुझाव का प्रयास करें। – user104309
यह मेरे लिए काम करता है (संघर्ष के कुछ दिनों के बाद)। जैक्सन संस्करण को अपग्रेड करने के बाद यह आवश्यक था। धन्यवाद उपयोगकर्ता 10430 9! –
पकड़े जाने में आसान - जैक्सन 1.9 के खिलाफ निर्माण कर रहा था, लेकिन देव पर्यावरण को पहले ही जैक्सन 2+ में अपग्रेड कर दिया गया है, जो पुराने एनोटेशन के बारे में कुछ भी नहीं जानता है। –