4

我想编写一个单元测试,它基本上验证我添加到外部集合的对象实际上在 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 实例?

4

1 回答 1

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);
于 2012-07-16T16:04:03.010 回答