2

私がmongoにこのようなjsonを持っているとしましょう:

{"n":"5"}

そしてこのようなJavaクラス:

@Entity 
public class Example {
    Integer n;
}

これは機能します(jsonは値を文字列ではなくintとして格納する必要があることは知っていますが、その部分は制御しません)。

今、私がこのようなモルヒネのようなデータを持っているときは、次のようになります。

{"n":""}

私は回避策を探しています(私が望む動作は、空の文字列がnullと同じように扱われることです)。

私がこれまでに持っている唯一の回避策は次のとおりです。

public class Example {
    String n;

    public Integer getN() {
        return NumberUtils.isNumber(n) ? NumberUtils.createInteger(n) : null;
    }
}

しかし、逆シリアル化の動作をカスタマイズするIntegerプロパティにアノテーションを掛ける方法を期待しています。

4

1 に答える 1

6

だから私はモルヒネグーグルグループでこれを尋ねました、そして私は答えを共有したいと思いました。ライフサイクルアノテーションを使用@PreLoadすると、POJOへの変換が行われる前にDBObjectを変更できます。だからこれはそれをするべきです:

@PreLoad void fixup(DBObject obj) {
    if (StringUtils.isEmpty(obj.get("n"))) {
        obj.put("n",null);
    }
}
于 2011-11-18T23:34:40.593 に答える