私は何が欠けているのかよく分かりませんが、or()
関数をWhereステートメントのORMliteのQueryBuilderORMlite QueryBuilderここでAとBとCと(DまたはEまたはF)
私は、クエリを持っていると私はそれになりたい:
where A and B and C and (D or E or F)
が、どのようなコードが生成されることである。
where (A and B and C and D) or E or F
and
にD
含まなっているだけでなく、 E
とF
はグループ化されていません。つまり、E
と一致するすべての行がretuになります私はA
、B
、およびC
がすべての行の要件として必要です。
私はORMliteのサンプルコードとor()
関数の説明を見てきましたが、それらはすべて私がしようとしているものではない(A and B) or (C and D)
のシナリオに焦点を当てているようです。私はコードが自分の状況でどのように機能するかを調べようとしましたが、それは本当に間違っていますので、私がどのようにしてor()
関数を使用していなければならないのか分かりません。
助けが必要ですか?
protected void addWhereClauses(Where<Sheep, Integer> whereClause) throws SQLException {
whereClause
.eq("owner_id", this.owner.getId()) // A
.and()
.isNull("markedfordeletiondate") // B
.and()
.eq("isownedbyme", this.currentlyShowingSheepMine); // C
String filterstring = getFilterString();
if (filterstring != null) {
filterstring = "%"+filterstring+"%";
whereClause.and()
.or(
whereClause.like("name", filterstring), // D
whereClause.like("tag", filterstring), // E
whereClause.like("scrapietag", filterstring) // F
)
;
}
}
編集:私は、私はそれをつかみ、コンソールにそれをログに記録していますので、生成されたクエリがどのようなものか知っている:
String sql = queryBuilder.prepareStatementString();
Log.d("BFLF", "sql: "+sql);
これはそれをどのように生成しているのですか?純粋に結果に基づいて? –
私はクエリビルダが生のSQLを吐き出しているので、デバッグの目的でそれを見ることができます。上記の私の記事を、SQL文のログに使用したコードで更新しました。 –
or()メソッドが多くの引数を取る場合、私は個人的にあなたが持っているものが間違っているのを見ません。 ormliteサイトのバグレポートを作成してみてください。これが実際にバグであれば、別のORMソリューションに切り替えることは可能でしょうか? –