null値をシリアライズ/動作していないが、それはまだ私が使用していますシリアル化ヌル値@JsonInclude(Include.NON_NULL)は、ジャクソンは、私はクラス/ POJOの上に注釈を配置してもマッパーを設定している
ハイバーネイト4.3.7ファイナルとジャクソン2.4.4。削除しましたゲッターとセッター
@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);
}
}
出力:
{"id":1,"students":null,"staff":null}
リストが存在し、そのリストが空であることを示すため、空にする必要があります。しかし、nullはロードされていないことを意味します。基本的には、休止状態のLazyオブジェクトで苦労します。私は代理人を見せたくありません。 –
null値の代わりに常に空のListを使用する必要があります。これは、関連付けられた子がない場合でも、Hibernateは常にプロキシを使用します。つまり、Parentオブジェクトを初めて作成するときにnull値を持つ唯一の時間があることを意味します。 –