我在我的android项目中使用ormlite。我有两个类ORMLite和懒惰集合的问题
@DatabaseTable(tableName = "usershows")
public class UserShow {
@DatabaseField(id = true)
private Integer showId;
@ForeignCollectionField(eager = false)
private ForeignCollection<Episode> episodes;
...
}
@DatabaseTable(tableName = "episodes")
public class Episode {
@DatabaseField(id = true)
private Integer episodeId;
@DatabaseField(foreign = true)
private UserShow show;
...
}
我救了我的UserShows对象,如in example
UserShow show = new UserShow();
userShowDao.create(show);
for (Episode e: eps) {
e.setShow(show);
episodeDao.create(e);
}
usershow将对象有个外国延迟集合的情节,但是当我试图让所有userShows:
shows = userShowsDao().queryForAll();
我正在收集所有节目集合的剧集。为什么会发生?集合是懒惰的,我必须得到空或其他东西,但没有收集Episode对象。如何让这个收藏真的很懒?如果ORMLite能够在没有延迟集合的情况下获取对象,并在真正需要时进行初始化,那可能会很酷。例如Hibernate.initialize
方法。
谢谢!
灰色,谢谢你的回复。我正在获取具有已初始化剧集集合的userShows对象,但是我不会对剧集进行任何调用。 –
我可以在我的调试器中看到这个http://postimage.org/image/cdqihamc/方法 public List getAllUserShows(){ List shows = null; try { shows = getHelper()。getUserShowsDao()。queryForAll(); catch(SQLException e){ e.printStackTrace(); } return shows; } –
是的,你的调试器正在调用'iterator()'和其他方法,使查询在那一点。它显示那里有剧集,但在调试器要求他们之前,他们不会在那里。如果打开日志记录功能,只有当调试器显示有关集合的信息时,才能看到正在查询的查询。 – Gray