我有一张约有10,000条记录的表.
例如,我有以下实体:
@Entity(tablename="cupcakes")public class CupcakeEntity { @PrimaryKey(autoGenerate = true) @Columnname(name = "ID") long ID; @Columnname(name = "name") String name; @Columnname(name = "parent_ID") Long parentID;}
然后,我将此类与CupcakeEntity自加入:
public class CupcakeModel { @Embedded CupcakeEntity cupcake; @Relation(parentColumn = "ID", entityColumn = "parent_ID") List<CupcakeEntity> parent;}
当我使用SQL语句获取CupcakeModel时:
选择*从纸杯蛋糕中,名称类似’%’|| :关键字|| ‘%’
该查询将引发以下异常:
too many sql variables (code 1): , while compiling: SELECT ID,name,parent_ID FROM `cupcakes` WHERE parent_ID IN(?,?,?,?...............................
我查看了Room的生成代码,发现它正在为所有实体循环.
除了创建自己的JOIN语句之外,还有其他解决方法吗?
解决方法:
如果有人碰到这个问题,我将在这里留下这个答案.
正如@CommonsWare所建议的那样,我在查询中添加了一个liMIT,现在看起来像:
选择*从纸杯蛋糕中,名称类似’%’|| :关键字|| ‘%’liMIT 500
这种解决方法应归功于@CommonsWare.
总结以上是内存溢出为你收集整理的android-Room-SQLiteLog:(1)SQL变量过多全部内容,希望文章能够帮你解决android-Room-SQLiteLog:(1)SQL变量过多所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)