7

リスト内の主キーを持つすべてのモデルについて、データベースにクエリを実行しようとしています。これは私のクエリです (idsList は整数を含む ArrayList です):

new Select().from(PostModel.class)
    .where(Condition.column(PostModel$Table.ID).in(0, idsList))
    .async().queryList(listener);

しかし、Android Studio は where 条件を強調表示し、次のように述べています。

"Cannot resolve method 'where(com.raizlabs.android.dbflow.sql.builder.Condition.In)"

では、Condition.In は条件とは見なされませんか? ArrayList で primaryKey を使用してすべてのモデルをクエリするにはどうすればよいですか?

DBFlow 2.0 を使用しています。代わりに通常の SQL クエリ文字列を使用することもできますが、私は SQL にそれほど精通していないため、問題に対して SQL クエリ文字列を提供していただければ、それが回避策となります。

4

5 に答える 5

6

In条件を作成します。

List<String> ids = new ArrayList<String>();

Condition.In in = Condition.column(Tree$Table.ID).in(ids.get(0));
for (i = 1; i < ids.size(); i++){
      in.and(ids.get(i));
}

long count = new Select().count().from(Tree.class)
        .where(in)
        .count();
于 2015-07-30T09:39:31.407 に答える
1

DBFlowのドキュメントを見ると、IN ステートメントがモデル化されているため、idsList含まれている場合["Test", "Test2", "TestN"]、コードは次のようにする必要があります。

Condition.column(MyTable$Table.NAME).in("Test").and("Test2").and("TestN")

...したがって、配列内の各項目を列挙する必要があるようです。

通常の SQL は次のようになります。

select *
from PostModel
where ID in ('Test', 'Test2', 'TestN')

...しかし、それでも配列内の各項目を列挙する必要があることを意味します。

于 2015-05-12T16:18:53.307 に答える
-1

Condition.Inでも同じ問題がありました

私がしたことは次のようなものでした:

 Condition.In in = Condition.column(PostModel$Table.ID).in(0, idsList);
 ConditionQueryBuilder<PostModel> conditionQueryBuilder = new ConditionQueryBuilder<>(PostModel.class, in);

 List<PostModel> posts = new Select().from(PostModel.class).where(conditionQueryBuilder).queryList();

これは、舞台裏で idsList を使用して行われます。

Collections.addAll(this.inArguments, idsList);

お役に立てれば。

于 2015-07-10T08:10:55.927 に答える