在android中使用ormlite和sqlite进行不区分大小写的顺序

Die*_*rik 6 android ormlite

我想从ORMLite DAO的情况下不敏感地订购我的数据对象.

目前我正在使用以下sqlite代码来区分我的所有者项:

ownerDao.queryBuilder().orderBy("Name", true).query();
Run Code Online (Sandbox Code Playgroud)

在这里看到sqlite支持不区分大小写的"order by"和以下原始SQL:

SELECT * FROM owner ORDER BY Name COLLATE NOCASE
Run Code Online (Sandbox Code Playgroud)

queryRaw()添加所需后缀的任何简单方法(比调用更容易)?

另一种解决方案是columnDefinitionDatabaseField注释的属性设置为TEXT COLLATE NOCASE

Gra*_*ray 17

我想你想要的是使用这个QueryBuilder.orderByRaw(String)方法.它看起来像:

ownerDao.queryBuilder().orderByRaw("Name COLLATE NOCASE").query();
Run Code Online (Sandbox Code Playgroud)

注意原始字符串并没有包含ORDER BY字符串的一部分.引用javadocs:

将原始SQL"ORDER BY"子句添加到SQL查询语句中.这不应该包括"ORDER BY".

TEXT COLLATE NOCASE columnDefinition可能的工作,虽然我没有用,在所有的经验.

此外,我不会使用orderBy("Name COLLATE NOCASE", true)答案,因为通常ORMLite试图转义列名称,引号将在错误的位置.