2017-01-20 6 views
7

МОЙ POJO:Spring Не посылать все поля в ответ 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; 
} 

И мой контроллер Отрывок:

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

Ответ в формате JSON выглядит следующим образом:

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

Почему другие два поля i.e userId и linkedEmail не отображаются в ответ, хотя Spring-Data JPA возвращает весь объект из репозитория?

+0

@ScaryWombat Lombok делает это .. таким образом, нет явных getter seters .. но для вашей информации я даже пытался с удалением '@ Data' из POJO и написал инструкции для getter seters .. но результат все тот же –

+0

извините не замечайте тег lombok. –

ответ

5

По умолчанию Spring Data Rest больше не отключает @Id Properties для JSON.

Это может быть достигнуто с помощью разоблачить Идентификаторы - Пожалуйста, проверьте Spring Rest

Похожие пост здесь с подробным explanation- id not marshalled to JSON

Я хотел бы предложить, чтобы иметь промежуточный класс Response вместо преобразования Entity в формате JSON.

+0

Спасибо, проверяя это .. Похоже на решение .. –

+0

Кроме того, я предлагаю иметь класс промежуточного ответа вместо преобразования Entity в JSON. –

 Смежные вопросы

  • Нет связанных вопросов^_^