8

文字列のリストがあります。各文字列は、GreenDaoを介して永続化されるアイテムの一意の識別子です。

このすべてのアイテムをデータベースからロードできるクエリを作成するにはどうすればよいですか?

QueryBuilderでそれを行う可能性はありますか、それともSQLの記述に戻る必要がありますか?

4

2 に答える 2

7

これは、Propertyクラスのin条件で可能です。

この例では、に含まれるフィールド値を持つすべてのボックスをロードしますfieldValuesfieldValuesタイプですList<String>

  List<LocalBox> boxes = getBoxDao(context).queryBuilder()
        .where(LocalBoxDao.Properties.field.in(fieldValues)).list();
于 2013-01-09T09:29:17.343 に答える
2

「inquery」に光を当てたいと思います。
これには制限があります。inquery内に100を超えるIDを渡すこと
はできません。したがって、これを実現するために私が行ったことは次のとおりです。

List<Product> productList = new ArrayList<Product>();
DaoSession daoSessionUni = TarneaAndroidApplicationContext.getInstance().getDaoSession();

for (int i = 0; i < rowIds.size(); i = i + 100) 
{
    ProductDao productDao = daoSessionUni.getProductDao();
    QueryBuilder<Product> queryBuilder = productDao.queryBuilder().where(
        ProductDao.Properties.Id.in(rowIds.subList(i + 100 < rowIds.size() ? 
                                                   i + 100 : 
                                                   rowIds.size())),
        ProductDao.Properties.IsDeleted.eq(0));             
    productList.addAll(queryBuilder.list());
}

クエリで使用してIDのリストを渡したい場合は、このメソッドを使用できます。

于 2013-04-01T07:22:02.040 に答える