Android 持久双向关系
我有以下课程:Android 持久双向关系,android,ormlite,Android,Ormlite,我有以下课程: public class AllegationContent { @DatabaseField(generatedId = true) protected long id; @DatabaseField(canBeNull = true, foreign = true) private AllegationItem allegationItem; @DatabaseField() protected String conten
public class AllegationContent {
@DatabaseField(generatedId = true)
protected long id;
@DatabaseField(canBeNull = true, foreign = true)
private AllegationItem allegationItem;
@DatabaseField()
protected String content;
...
}
以及:
但我有一个错误:
04-24 10:41:57.128:错误/AndroidRuntime(802):java.lang.RuntimeException:无法启动活动组件信息{br.com.project/br.com.project.DaoTestActivity}:java.lang.NullPointerException
我解决了。无法创建该表,因为没有atributes,只有id(这是另一个问题)。NPE发生的原因是getAllegationContent返回null,因此首先我需要创建一个ForeignCollection列表,使用setAllegationContent进行设置,然后获取。我解决了这个问题。无法创建该表,因为没有atributes,只有id(这是另一个问题)。NPE发生是因为getAllegationContent返回null,所以首先我需要创建一个ForeignCollection列表,使用setAllegationContent设置,然后使用get。那么NPE发生在哪一行?您是否尝试过调试代码以确定该行上的哪些对象为空?没有足够的信息让任何人知道您试图在代码中访问空指针的位置。我找不到行。我从AllegationItem中删除了ForeignCollection并尝试只创建一个AllegationItem,但得到了以下错误:“信息/数据库(1024):sqlite返回:错误代码=1,msg=near”):语法“我无法理解…”。。。AllegationItem只有字段Id。抱歉,信息太少,我们无法提供帮助。抱歉,我是ORMLite和Android新手=/我可以编辑此帖子添加更多信息吗?我建议您学习如何使用调试器。逐步检查代码,直到得到异常。这是一个关于这个主题的好视频:那么NPE发生在哪一行呢?您是否尝试过调试代码以确定该行上的哪些对象为空?没有足够的信息让任何人知道您试图在代码中访问空指针的位置。我找不到行。我从AllegationItem中删除了ForeignCollection并尝试只创建一个AllegationItem,但得到了以下错误:“信息/数据库(1024):sqlite返回:错误代码=1,msg=near”):语法“我无法理解…”。。。AllegationItem只有字段Id。抱歉,信息太少,我们无法提供帮助。抱歉,我是ORMLite和Android新手=/我可以编辑此帖子添加更多信息吗?我建议您学习如何使用调试器。逐步检查代码,直到得到异常。下面是一段关于这个主题的精彩视频:
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);