在SQLite中使用ForeignCollections

时间:2012-07-15 15:37:37

标签: sqlite ormlite foreign-collection

我想编写一个单元测试,它基本上验证了我添加到外部集合的对象实际上在DAO保存检索对象时被正确保存和检索 这是我的实体。

@DatabaseTable
public class Question implements Question, Serializable {

    @DatabaseField
    private String questionText;

    @ForeignCollectionField
    private ForeignCollection<Answer> answers;

    public void addAnswer(Answer answer) {
        answers.add(answer);
    }

我想要做的是创建一个Question实例,向集合中添加一个Answer对象,并将Question传递给我的DAO,这将保留它。持久性在常规字段上工作正常,所以我知道那里没有问题。

如何在集合中添加Answer?当我创建Question时,它的答案集合为空。这是我必须保存新的Question然后检索它以使答案集合非空?或者,我是否将答案设置为BaseCollection,LazyCollection实例?

1 个答案:

答案 0 :(得分:7)

这是常见问题解答。正确的方法是使用Dao.getEmptyForeignCollection(...)方法创建一个可以添加项目的集合。类似的东西:

Question question = new Question();
query.answers = questionDao.getEmptyForeignCollection("answers");
Answer answer1 = new Answer();
query.answers.add(answer1);
// this can come before the question.answers.add()
questionDao.create(question);