6

ORMLiteDAOケースからデータオブジェクトを無差別に注文したい。

現在、所有者のアイテムを大文字と小文字を区別して注文するために、次のsqliteコードを使用しています。

ownerDao.queryBuilder().orderBy("Name", true).query();

ここで、sqliteが次の生のSQLで大文字と小文字を区別しない「順序付け」をサポートしていることがわかります。

SELECT * FROM owner ORDER BY Name COLLATE NOCASE

queryRaw()目的のサフィックスを追加する簡単な方法(呼び出すよりも簡単)はありますか?

別の解決策は、 DatabaseFieldアノテーションcolumnDefinitionのプロパティをに設定することでしょうか?TEXT COLLATE NOCASE

4

1 に答える 1

17

QueryBuilder.orderByRaw(String)あなたが望むのは、メソッドを使用することだと思います。次のようになります。

ownerDao.queryBuilder().orderByRaw("Name COLLATE NOCASE").query();

生の文字列には文字列の一部が含まれていないことに注意してください。javadocsORDER BYを引用するには:

生の SQL "ORDER BY" 句を SQL クエリ ステートメントに追加します。これには「ORDER BY」を含めないでください。

私はそれを使用したTEXT COLLATE NOCASE columnDefinition経験がまったくありませんが、うまくいくかもしれません。

また、通常、 ORMLiteは列名をエスケープしようとし、引用符が間違った場所にあるため、回答を使用しません。orderBy("Name COLLATE NOCASE", true)

于 2012-04-23T17:45:48.833 に答える