当前位置:首页 > 数据库 > SQlite

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

我有一张约有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.


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!