2015-01-15 19 views
6

ho disposto l'annotazione sulla classe/POJO e anche configurato il mapper, ma ancora serializzarenulli valori@JsonInclude (Include.NON_NULL) non funzionante/Jackson serializzazione valori nulli

sto usando Hibernate 4.3.7 Femmina e Jackson 2.4.4. Le collezioni sono pigro caricato

Pojo: getter e setter Rimosso

@JsonInclude(Include.NON_NULL) 
@Entity 
@Table 
public class School { 

    @Id 
    @GeneratedValue 
    private int id; 

    @OneToMany(cascade=CascadeType.ALL,fetch= FetchType.LAZY) 
    private List<Student> students; 

    @OneToMany(cascade=CascadeType.ALL,fetch= FetchType.LAZY) 
    private List<Employee> staff; 

} 

JSONMapper:

@Component 
public class JSONMapper extends ObjectMapper { 
/** 
    * 
    */ 
    private static final long serialVersionUID = -3131980955975958812L; 

//ref http://blog.pastelstudios.com/2012/03/12/spring-3-1-hibernate-4-jackson-module-hibernate/ 

    public JSONMapper() { 

     Hibernate4Module hm = new Hibernate4Module(); 
     registerModule(hm); 
     configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); 
     configure(SerializationFeature.INDENT_OUTPUT , false); 
     configure(MapperFeature.DEFAULT_VIEW_INCLUSION, false); 
     setSerializationInclusion(Include.NON_NULL); 
    } 
} 

uscita:

{"id":1,"students":null,"staff":null} 

risposta

7

Prova utilizzando JsonInclude.NON_EMPTY invece.

+0

Voglio includere vuoto perché mostra un elenco esiste e il suo vuoto. Ma null significa che non è caricato. Fondamentalmente alle prese con oggetti Lazy in letargo. Non voglio mostrare i proxy. –

+0

È consigliabile utilizzare sempre elenchi vuoti anziché valori nulli. Questo perché Hibernate utilizzerà sempre i proxy, anche quando non esiste un figlio associato, il che significa che l'unica volta in cui si ha un valore nullo è quando si crea l'oggetto Parent per la prima volta. –

2

Si consiglia di archiviare un bug nel progetto; potrebbe essere che la gestione di raccolte pigro-caricate (che richiedono una gestione speciale e sostituzioni a quella predefinita) non sta facendo controlli di inclusione adeguati.

Problemi correlati