gpt4 book ai didi

android - ForeignCollection 未使用查询生成器加载

转载 作者:行者123 更新时间:2023-11-29 22:18:34 25 4
gpt4 key购买 nike

我尝试在 android 应用程序中使用 OrmLite,但遇到了一个问题:

我在一个对象上创建了一个外部集合,并为它分配了一些对象。我可以使用 DAO 上的 queryForAll() 方法来查询对象,并按预期返回它们:

allTeams = getHelper().getTeamDao().queryForAll();
for(ScrumTeam team : allTeams) {
if(team.getMembers() == null || team.getMembers().size() == 0) {
log("No Members");
} else {
log(team.getMembers().size()+" Members");
}
}

这按预期工作,在 Teams 上打印“2 Members”或“3 Members”,代表正确的数据。

显然,我想对数据进行排序,我找到的方法是使用 queryBuilder:

allTeams = getHelper().getTeamDao().queryBuilder().selectColumns("id", "name").orderBy("name", true).query();
for(ScrumTeam team : allTeams) {
if(team.getMembers() == null || team.getMembers().size() == 0) {
log("No Members");
} else {
log(team.getMembers().size()+" Members");
}
}

上面的代码输出“无成员”,但我可以完美地访问团队的其他数据(id 和名称)。我尝试在集合中将 eager 设置为 true 和 false,但都没有用。进一步调查,我发现成员数组未初始化(null)。这是一个错误,还是我错误地使用了库?有没有办法手动获取 ForeigCollection?

感谢您的回复!

最佳答案

很有趣。问题是您已将列限制为 "id""name"ORMLite因此不会为您创建 ForeignCollection 字段。

这是一个错误,已在 4.30 版中修复。我们添加了在 selectColumns() 中指定 ForeignCollection 列名称的功能。这是关于此的错误修复:

https://sourceforge.net/tracker/?func=detail&aid=3428751&group_id=297653&atid=1255989

您需要修改您的 QueryBuilder 代码以同时“选择”members 字段。

...selectColumns("id", "name", "members")...

这是selectColumns() 方法的文档:

http://ormlite.com/docs/select-columns

引用:

WARNING: If you specify any columns to return, then any foreign-collection fields will be returned as null unless their ForeignCollectionField.columnName is also in the list.

关于android - ForeignCollection 未使用查询生成器加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7900088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com