You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用参数查询RealmList<Integer>?Realm分类模型子分类查询

看起来你在Realm中查询子分类的时候踩了个小坑,我来帮你捋清楚正确的做法~

首先,你的需求是找出所有parentCategories列表中包含指定分类ID的Category对象(也就是该分类的子分类),但之前的查询写法有问题:你之前用contains("parentCategories", category.getParentCategories()),这里的第二个参数传错了——Realm的contains()方法针对RealmList<Integer>字段时,需要传入的是单个要匹配的ID值,而不是整个父ID列表;直接传数组的方式也不对,contains不支持数组参数。

正确的查询代码

// 获取目标父分类的ID
Integer targetParentId = category.getId();
Realm realm = Realm.getDefaultInstance();
try {
    RealmResults<Category> childCategories = realm.where(Category.class)
        // 检查parentCategories列表中是否包含目标父ID
        .contains("parentCategories", targetParentId)
        .findAll();
    return childCategories;
} finally {
    // 务必关闭Realm实例,避免资源泄漏
    realm.close();
}

关键说明

  • contains("parentCategories", targetParentId):这个方法会遍历每个Category的parentCategories列表,只要列表里包含targetParentId,就会被筛选出来,正好符合你找子分类的需求。
  • 用try-finally包裹Realm操作:确保不管查询成功还是失败,Realm实例都会被正确关闭,这是Realm开发中的最佳实践。
  • 如果在UI线程执行查询:建议改用findAllAsync()避免阻塞UI,示例如下:
RealmResults<Category> childCategories = realm.where(Category.class)
    .contains("parentCategories", targetParentId)
    .findAllAsync();
// 可以添加监听器获取异步查询结果
childCategories.addChangeListener(results -> {
    // 处理查询到的子分类
});

这样调整后,应该就能正确查询到指定分类的所有子分类啦~

内容的提问来源于stack exchange,提问作者TomCB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:00:57