0

jcouchdbでは、BaseDocumentを拡張してから、透過的な方法で、アノテーションと宣言されていないフィールドを混在させていました。例:

import org.jcouchdb.document.BaseDocument;

public class SiteDocument extends BaseDocument {
    private String site;

    @org.svenson.JSONProperty(value = "site", ignoreIfNull = true)
    public String getSite() {
        return site;
    }

    public void setSite(String name) {
        site = name;
    }
}

そしてそれを使用します:

// Create a SiteDocument
SiteDocument site2 = new SiteDocument();
site2.setProperty("site", "http://www.starckoverflow.com/index.html");
// Set value using setSite
site2.setSite("www.stackoverflow.com");
// and using setProperty
site2.setProperty("description", "Questions & Answers");
db.createOrUpdateDocument(site2);

注釈を介して定義されたドキュメントフィールド(サイト)と定義されていないプロパティフィールド(説明)の両方を使用する場合、ドキュメントを保存すると両方がシリアル化されます。

半構造化されたドキュメントで作業できるので、これは私にとって便利です。

Ektorpで同じことをしようとすると、注釈を使用したドキュメントとHashMapを使用したドキュメントがありますが、両方を簡単に組み合わせる方法を見つけることができませんでした(独自のシリアライザーを使用してみましたが、これは何かに役立つようですjcouchdbで無料で入手できます)。また、HashMapフィールドに注釈を付けようとしましたが、オブジェクトとしてシリアル化され、HashMapフィールドの名前でオブジェクト内にフィールドが自動的に保存されます。

Ektorpを使用して(簡単に/無料で)行うことは可能ですか?

4

1 に答える 1

0

それは間違いなく可能です。2つのオプションがあります。

  1. クラスはorg.ektorp.support.OpenCouchDbDocumentに基づいてください
  2. @JsonAnySetterと@JsonAnyGetterでクラスにアノテーションを付けます。ここでもっと赤:http ://wiki.fasterxml.com/JacksonFeatureAnyGetter
于 2012-05-21T06:45:04.883 に答える