1

次のように、 ORMLite を使用して会話のコメントを表現しようとしています:

@DatabaseTable(tableName = "comments")
public class Comment implements Parcelable{

    @DatabaseField(id = true)
    private Long id;
    @DatabaseField
    private Long conversation_id;
    @DatabaseField
    private String text;
    ...

    public static class List extends ArrayList<Comment>{
    }
}

...と...

@DatabaseTable(tableName = "conversations")
public class Conversation implements Parcelable{

    @DatabaseField(id = true)
    private Long id;
    ...
    @ForeignCollectionField
    private Comment.List comments;
    @DatabaseField
    private Date created_at;
    ...
}

そして、私はこのエラーが発生しています:

「コメント」のフィールド クラスは、クラス ForeignCollection または Collection である必要があります

GSON も使用しているため、これらのモデルは json から自動的に入力されます。例えば:

{
    "created_at":"2013-08-12T20:38:11Z",
    "id":31,
    "comments":[
        {
            "conversation_id":31,
            "id":46,
            "text":"IE sucks",
        },
        {
            "conversation_id":31,
            "id":47,
            "text":"Yes it does",
        }
    ]
}

記述子を変更するだけでこれを達成する方法はありますか?
コメントの型として ForeignCollection を使用するように Conversation クラスを作り直すか、Comment.List クラスを変更して ForeignCollection を拡張する必要がありますか? 現在正常に動作している GSON の実装が壊れてしまうのではないかと心配しているため、これらのいずれかを実行することは避けたいと思います。

4

1 に答える 1

1

コメントクラス:

...
@DatabaseField(
    foreign = true
)
private Conversation conversation_id;
...

conversation_id は実際には Conversation オブジェクトの ID のみを格納し、オブジェクト自体は格納しません。

ここに本当に良い(何らかの形でフォーマットされていない場合)ドキュメントがあります:http://ormlite.com/docs/foreign-object

于 2013-09-03T22:29:05.843 に答える