2017-04-05 10 views
0

エンティティからフィールドを選択的にシリアル化するためにJsonViewを実装しようとしていますが、シリアル化されたjsonにフィールドのない空のオブジェクトがあります。以下は私のコードです:JsonViewが空のjsonオブジェクトを返す

ViewClass:

public class AuditReportView { 
    public interface Summary {} 
} 

エンティティ:

@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>(); 
} 

コントローラー:ポストマンから

@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:

[ 
    {}, 
    {}, 
    {} 
] 

データベースには3つの結果しかありません。デバッグする際には、それらを完全に取り除いているだけで、メンバーがシリアル化されていないということだけです。私はSpring 4.3.7とJackson 2.8.7を使用しています。何が間違っているのか、問題のデバッグをどこから開始するのかについてのアイデアはありますか?

ありがとうございました

+0

私は同じ問題を抱えています。これに関するすべてのニュース? –

答えて

0

属性のgetterおよびsettersメソッドを作成する必要があります。私はそれをし、それは働いた。

関連する問題