2017-04-05 535 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和setter方法。我做到了,它工作。