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;
    ...
}

我收到了这个错误:

'comments' 的字段类必须是 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",
        }
    ]
}

有没有办法通过改变描述符来实现这一点?
是否有必要重新设计 Conversation 类以使用 ForeignCollection 作为评论类型或更改 Comment.List 类以扩展 ForeignCollection?我想避免做任何这些,因为我担心它会破坏目前运行良好的 GSON 实现。

4

1 回答 1

1

在评论类中:

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

conversation_id 实际上只存储对话对象的 id,而不是对象本身。

这里有一个非常好的(如果以某种方式未格式化)文档:http: //ormlite.com/docs/foreign-object

于 2013-09-03T22:29:05.843 回答