android-Room-SQLiteLog:(1)SQL变量过多

android-Room-SQLiteLog:(1)SQL变量过多,第1张

概述我有一张约有10,000条记录的表.例如,我有以下实体:@Entity(tableName="cupcakes")publicclassCupcakeEntity{@PrimaryKey(autoGenerate=true)@ColumnName(name="id")longid;@ColumnName(name="name")Stringname;@ColumnName(n

我有一张约有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变量过多所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1092092.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存