2017-04-05 3 views
0

Ich versuche, ein JsonView zu implementieren, um Felder von einer Entität selektiv zu serialisieren, aber das Js, das serialisiert wird, hat leere Objekte ohne Felder. Unten ist mein Code:JsonView, das leere JSON-Objekte zurückgibt

ViewClass:

public class AuditReportView { 
    public interface Summary {} 
} 

Entity:

@Entity 
@SequenceGenerator(name = "AUDIT_REPORT_SEQUENCE_GENERATOR", sequenceName = "EJB_AUDIT_REPORT_SEQ", initialValue = 1, allocationSize = 1) 
@Table(name = "DEVICE_AUDIT_REPORT") 
@Data 
public class AuditReport implements Serializable { 

    private static final long serialVersionUID = 1246376778314918671L; 

    @Id 
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "AUDIT_REPORT_SEQUENCE_GENERATOR") 
    @Column(name = "ID", nullable = false) 
    @JsonView(AuditReportView.Summary.class) 
    private Long id; 

    @Column(name = "DEVICE_ID", nullable = false) 
    @JsonView(AuditReportView.Summary.class) 
    private String deviceId; 

    @Column(name = "REPORT_TIMESTAMP", nullable = false) 
    @JsonView(AuditReportView.Summary.class) 
    private Calendar reportTimestamp; 

    @Column(name = "USER_ID", nullable = false) 
    @JsonView(AuditReportView.Summary.class) 
    private long userId; 

    @Column(name = "USERNAME", nullable = false) 
    @JsonView(AuditReportView.Summary.class) 
    private String username; 

    @Column(name = "START_DATE", nullable = false) 
    @JsonView(AuditReportView.Summary.class) 
    private Calendar startDate; 

    @Column(name = "END_DATE", nullable = false) 
    @JsonView(AuditReportView.Summary.class) 
    private Calendar endDate; 

    @OneToMany(mappedBy = "auditReport", fetch = FetchType.LAZY, orphanRemoval = true, cascade={CascadeType.ALL}) 
    private Set<AuditEntry> auditEntries = new HashSet<AuditEntry>(); 
} 

Controller:

@JsonView(AuditReportView.Summary.class) 
    @RequestMapping(method = RequestMethod.GET, value = "auditReportSummary") 
    public @ResponseBody ResponseEntity<?> getAuditReportSummary() 
    { 
     final List<AuditReport> auditReports = auditDAO.getAuditReportSummary(); 

     return new ResponseEntity<>(auditReports, HttpStatus.OK); 
    } 

Json von Postman:

[ 
    {}, 
    {}, 
    {} 
] 

Die Datenbank hat nur 3 Ergebnisse und wenn ich debugge, ist es definitiv herausziehen, es ist nur, dass keine Mitglieder serialisiert werden. Ich benutze Spring 4.3.7 und Jackson 2.8.7. Irgendwelche Ideen, was könnte falsch sein oder wo das Problem zu debuggen beginnen?

Dank

+0

Ich habe das gleiche Problem. Irgendwelche Neuigkeiten diesbezüglich? –

Antwort

0

Sie müssen für Attribute Getter und Setter-Methoden erstellen. Ich habe es getan und es hat funktioniert.

Verwandte Themen