【发布时间】:2017-10-23 10:44:03
【问题描述】:
我正在使用今年 Google I/O 上发布的新 Room Persistance Library,到目前为止它运行良好,但不知何故,无法使用 UNICODE 或 LOCALIZED 对结果进行排序。唯一有效的是 NOCASE 对我来说没用。
有没有办法实现这个功能呢?
@Dao
public interface ContactDao {
@Query("SELECT * FROM contact ORDER BY lastName COLLATE LOCALIZED")
Flowable<List<Contact>> getAll();
}
如果我像上面那样构建查询,我会得到一个错误:
Error:(21, 29) error: There is a problem with the query: [SQLITE_ERROR]
SQL error or missing database (no such collation sequence: LOCALIZED)
【问题讨论】:
-
如果我理解正确,要使用
COLLATE LOCALIZED,您需要在CREATE TABLE语句中将其声明为列约束的一部分。看来您可以使用Migration来编写自己的CREATE TABLE语句,但我不清楚如何为初始表创建创建Migration(与升级相比)。我不知道您是否是提交this issue 的人,但我会留意它。 -
嗨,你修好了吗?
-
不是真的......目前我只是在使用之前对列表进行排序。
Collections.sort(nameOfYourList) { o1, o2 -> Collator.getInstance(Locale.GERMAN).compare(o1.lastName, o2.lastName) }
标签: android database sqlite orm android-room