2012-04-23 2 views
5

Я хочу, чтобы мои объекты данных из ORMLite DAO дела были незаметны.Нечувствительный к регистру порядок с ormlite и sqlite в android

В настоящее время я использую следующий SQLITE код заказ моего владелец всевозможного дела чувствительно:

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

Я вижу here, что SQLite поддерживает регистрозависимость «заказ» со следующим необработанным SQL:

SELECT * FROM owner ORDER BY Name COLLATE NOCASE 

Любой простой способ (проще, чем позвонить queryRaw()) добавления нужного суффикса?

Может ли альтернативное решение установить columnDefinition на DatabaseField annotation на TEXT COLLATE NOCASE?

+0

Вы пробовали 'orderBy (« Name COLLATE NOCASE », true)' возможно, это проходит через этот путь. – zapl

+1

Я думал об этом, но даже если это сработает, оно может сломаться с какой-то будущей версией ORMLite. – Diederik

ответ

16

Я думаю, что вы хотите использовать QueryBuilder.orderByRaw(String) method. Это будет выглядеть примерно так:

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

Обратите внимание на сырье строка делает не содержать ORDER BY часть строки. Процитировать javadocs:

Добавить необработанное SQL-предложение «ORDER BY» в инструкцию SQL-запроса. Это не должно включать «ORDER BY».

TEXT COLLATE NOCASEcolumnDefinition может работать, хотя у меня нет опыта использования этого.

Кроме того, я бы не использовать orderBy("Name COLLATE NOCASE", true) ответ, так как правило ORMLite пытается убежать имена столбцов и котировки будут находиться в неправильном месте.

+0

orderByRaw («Название COLLATE NOCASE») работает как ожидалось. Спасибо, Серый – Diederik