我想从ORMLite DAO中对数据对象进行不敏感的排序。
目前我正在使用以下sqlite代码来区分我的所有者项目:
ownerDao.queryBuilder().orderBy("Name", true).query();
我看到here sqlite使用以下原始SQL支持不区分大小写的“order by”:
SELECT * FROM owner ORDER BY Name COLLATE NOCASE
添加所需后缀的任何简单方法(比调用queryRaw()
更容易)?
替代解决方案是否可以将DatabaseField annotation上的columnDefinition
属性设置为TEXT COLLATE NOCASE
?
答案 0 :(得分:17)
我认为你想要的是使用QueryBuilder.orderByRaw(String)
method。它看起来像是:
ownerDao.queryBuilder().orderByRaw("Name COLLATE NOCASE").query();
请注意原始字符串不包含字符串的ORDER BY
部分。引用javadocs:
将原始SQL“ORDER BY”子句添加到SQL查询语句中。这不应包括“ORDER BY”。
TEXT COLLATE NOCASE
columnDefinition
可能有效,但我根本没有任何使用过的经验。
此外,我不使用orderBy("Name COLLATE NOCASE", true)
答案,因为通常ORMLite会尝试转义列名,引号会出错。