2013-03-15 9 views
14

के लिए पहले से ही POJO था @JsonIdentityInfo जैक्सन एनोटेशन के साथ काम करने का प्रयास करते समय मुझे एक त्रुटि है। जब मैं वस्तु deserialize करने की कोशिश मैं folowing अपवाद:जेसन मैपिंग अपवाद: आईडी

JSON नहीं पढ़ा जा सका: पहले से ही आईडी (java.lang.Integer) [1] (संदर्भ श्रृंखला के माध्यम से के लिए POJO था: eu.cobiz.web। डोमेन .साइट ["ऑपरेटर"] -> eu.yavix.web.domain.Account ["image"] -> eu.cobiz.web.domain.Image ["@ image"]); नेस्टेड अपवाद com.fasterxml है .jackson.databind.JsonMappingException: -> यूरोपीय संघ [ "संचालक"] eu.yavix.web.domain.Site: पहले से ही आईडी (java.lang.Integer) [1] (संदर्भ श्रृंखला के माध्यम से के लिए POJO था। cobiz.web.domain.Account ["image"] -> eu.cobiz.web.domain.Image ["@ image"])

JSON मैं कैसी लगती है deserialize करने के लिए कोशिश कर रहा हूँ:

{ 
"@Site": 1, 
"siteId": 1, 
"name": "0", 
"address": { 
    "@Address": 2, 
    "addressId": 4, 
    "number": "22" 
}, 
"operators": [ 
    { 
     "accountId": 1, 
     "email": "[email protected]", 
     "image": { 
      "@Image": 1, 
      "imageId": 1, 
      "uri": "http://icons.iconarchive.com/icons/deleket/purple-monsters/128/Alien-awake-icon.png" 
     } 
    }, 
    { 
     "accountId": 2, 
     "email": "[email protected]", 
     "image": { 
      "@Image": 2, 
      "imageId": 2, 
      "uri": "http://icons.iconarchive.com/icons/deleket/purple-monsters/128/Alien-awake-icon.png" 
     } 
    } 
] 
} 

मेरे डोमेन वस्तु

@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property = "@Image") 

समस्या @Id एनोटेशन पर उठता है के बाद से अगर मैं टिप्पणी निकालने समस्या गायब हो जाता है के साथ टिप्पणी की जाती है (जैसा कि मैंने खाते के लिए किया था) लेकिन मेरी समझ पर नई सुविधा चक्रीय निर्भरताओं के लिए उपयोगी है जो अन्य परिदृश्यों में मेरे लिए उपयोगी है। अलग-अलग वस्तुओं के बाद से 2 छवियों के बीच कोई संघर्ष नहीं होना चाहिए।

क्या किसी को पता है कि कैसे हल करना है या समस्या क्या है?

उत्तर

18

के बजाय ObjectIdGenerators.PropertyGenerator.class या ObjectIdGenerators.UUIDGenerator.class उपयोग करने के लिए जब आईडी व्याख्या आप गुंजाइश संपत्ति का उपयोग करना चाहिए की कोशिश से बचने के लिए। फिर डी-सीरियलाइज़र यह सुनिश्चित करेगा कि आईडी दायरे में अद्वितीय है।

एनोटेशन प्रकार JsonIdentityInfo से

:

स्कोप एक वस्तु ईद की प्रयोज्यता परिभाषित करने के लिए प्रयोग किया जाता है: सभी आईडी उनके दायरे के भीतर अद्वितीय होना चाहिए; जहां दायरे को इस मान और जनरेटर प्रकार के संयोजन के रूप में परिभाषित किया जाता है।

उदा। @JsonIdentityInfo (जनरेटर = ऑब्जेक्टआईड जेनरेटर.इन्ट्सक्वेंस जेनरेटर.क्लास, संपत्ति = "@ आईडी", स्कोप = खाता.क्लास)

5

आईडी संघर्ष ObjectIdGenerators.IntSequenceGenerator.class

+0

मुझे लगता है कि deserialization के लिए आवेदन नहीं करता है - आईडी पहले से मौजूद है। –

संबंधित मुद्दे