1

私はこれらのクラスを持っています:

public class AllegationContent {

    @DatabaseField(generatedId = true)
    protected long id;

    @DatabaseField(canBeNull = true, foreign = true)
    private AllegationItem allegationItem;

    @DatabaseField()
    protected String content;
    ...
}

と:

public class AllegationItem {
   @DatabaseField(generatedId = true)
    protected long id;

    @ForeignCollectionField(eager = false)
    protected ForeignCollection<AllegationContent> allegationContent;
    ...
}

どうすれば両方を永続化できますか?私はこれを試しています:

    allegationContentDao = getAllegationContentDao();   
    AllegationContent allegationContent = new AllegationContent(); 
    allegationContent.setContent("allegation content");     
    allegationContentDao.create(allegationContent);

    allegationItemDao = getAllegationItemDao();
    AllegationItem allegationItem = new AllegationItem();
    AllegationContent allegationContent2 = allegationContentDao.queryForSameId(allegationContent);  //is that wrong?
    allegationItem.getAllegationContent().add(allegationContent2);
    allegationItemDao.create(allegationItem);

しかし、私はこのエラーを受け取りました:

04-24 10:41:57.128:エラー/ AndroidRuntime(802):java.lang.RuntimeException:アクティビティを開始できませんComponentInfo {br.com.project/br.com.project.DaoTestActivity}:java.lang.NullPointerException

4

1 に答える 1

1

解決しました。属性がなく、IDのみであるため、テーブルを作成できません(別の問題は何ですか)。getAllegationContentがnullを返すためにNPEが発生するため、最初にForeignCollectionリストを作成し、setAllegationContentを使用して設定してからgetを実行する必要があります。

于 2012-04-25T15:13:26.663 に答える