2017-01-20 6 views
7

मेरी POJO:स्प्रिंग JSON उत्तर में सभी क्षेत्रों भेजने नहीं

import java.io.Serializable; 

import javax.persistence.Entity; 
import javax.persistence.Id; 
import javax.persistence.IdClass; 
import javax.persistence.Table; 

import lombok.Data; 


@Entity 
@Table(name="user_linked_email") 
@IdClass(UserLinkedEmailKey.class) 
@Data 
public class UserLinkedEmail implements Serializable { 


    /** 
    * serialVersionUID 
    */ 
    private static final long serialVersionUID = 1L; 

    @Id 
    private Integer userId; 
    @Id 
    private String linkedEmail; 


    /** 
    * The Following are appearing in JSON response 
    */ 
    private boolean status; 

    private boolean preferredFlag; 

} 

UserLinkedEmailKey वर्ग:

public class UserLinkedEmailKey implements Serializable { 
    /** 
    * serialVersionUID 
    */ 
    private static final long serialVersionUID = 1L; 

    private Integer userId; 
    private String linkedEmail; 
} 

और मेरे नियंत्रक स्निपेट:

JSON में
public org.springframework.http.ResponseEntity<?> getLinkedEmails(@PathVariable(value = "userId") Integer zepoUserId) { 


     try { 
      List<UserLinkedEmail> linkedEmails = userService.getLinkedEmails(zepoUserId); 


      //linkedEmails till this point has all 4 fields 

      return new ResponseEntity<List<UserLinkedEmail>>(linkedEmails, HttpStatus.OK); 

     } catch (Exception e) { 
      // 
     } 

प्रतिक्रिया इस प्रकार है:

[ 
    { 
    "status": false, 
    "preferredFlag": true 
    }, 
    { 
    "status": true, 
    "preferredFlag": false 
    }, 
    { 
    "status": true, 
    "preferredFlag": false 
    } 
] 

अन्य दो फ़ील्ड i.e userId और linkedEmail प्रतिक्रिया में क्यों दिखाई नहीं दे रहे हैं हालांकि वसंत-डेटा जेपीए पूरे ऑब्जेक्ट को भंडार से वापस कर रहा है?

+0

@ScaryWombat लंबोक कि .. इस प्रकार कोई स्पष्ट गेटर setters .. लेकिन आपकी जानकारी के लिए, मैं भी POJOs से निकालने '@ डेटा' साथ की कोशिश की और मैनुअल गेटर setters लिखा .. करता है लेकिन परिणाम अभी भी वही –

+0

खेद किया है लोम्बोक टैग पर ध्यान न दें। –

उत्तर

5

डिफ़ॉल्ट रूप से, स्प्रिंग डेटा रेस्ट अब JSON को @Id गुणों को मार्शल नहीं करता है।

इस आईडी का पर्दाफाश का प्रयोग कर प्राप्त किया जा सकता है - विस्तृत explanation- id not marshalled to JSON

के साथ यहाँ की जांच करें Spring Rest

इसी प्रकार के पोस्ट मैं बजाय JSON करने के लिए इकाई में परिवर्तित करने का मध्यवर्ती रिस्पांस कक्षा के लिए सुझाव है।

+0

धन्यवाद यह जांच रहा है .. समाधान की तरह लगता है .. –

+0

इसके अलावा, मैं एंटिटी को जेएसओएन में परिवर्तित करने के बजाय इंटरमीडिएट रिस्पांस क्लास रखने का सुझाव दूंगा। –

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