2017-01-20 56 views
7

MY POJO:sprężyna nie może wysyłać do wszystkich pól w odpowiedzi 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; 

} 

klasa UserLinkedEmailKey:

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

    private Integer userId; 
    private String linkedEmail; 
} 

And My Kontroler Snippet:

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) { 
      // 
     } 

odpowiedź w JSON jest następujący:

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

Dlaczego pozostałe dwa pola, np. UserId i linkedEmail, nie wyświetlają się w odpowiedzi, mimo że JPA ze Spring-Data zwraca cały obiekt z repozytorium?

+0

@ScaryWombat Lombok robi to .. w ten sposób nie jawnie ustawiaczy getter .. ale dla twojej informacji, nawet próbowałem z usunięciem '@ Data' z POJOs i napisałem settery ustawiaczy getter .. ale wynik jest wciąż ten sam –

+0

sorry did nie zauważam tagu lombok. –

Odpowiedz

5

Domyślnie Spring Data Rest nie zawiera już właściwości @Id Properties dla JSON.

Można to osiągnąć za pomocą wystawiać identyfikatory - proszę sprawdzić Spring Rest

podobnym stanowisku tutaj szczegółowych explanation- id not marshalled to JSON

Proponuję mieć klasę pośrednią Response zamiast konwersji jednostki do JSON.

+0

Dzięki temu sprawdzeniu .. Wygląda na to, że to rozwiązanie .. –

+0

Sugerowałbym także, aby zamiast klasy Konwertować JSON na Intermediate Response Class. –