【发布时间】:2022-01-01 12:21:37
【问题描述】:
我遇到了一个奇怪的问题。 仅在 android 11 设备中使用 SQL lite 查询。
@Query("SELECT *, SUM(case when isReadMessage = 0 then 1 else 0 end) as countMessage from chat_message_history\n" +
" where messageUser is not null GROUP BY messageUser ORDER by messageDate desc")
LiveData<List<MessagesData>> getAllLiveUniqueUsers();
DAO 类
@Entity(tableName = "chat_message_history", indices = {
@Index(value = "mesId")})
public class MessagesData {
@PrimaryKey(autoGenerate = true)
private int mesId;
private String message;
@TypeConverters(DateConverter.class)
private Date messageDate;
private boolean isReadMessage;
private int countMessage;
private String messageUser;
...}
日期转换器类
public class DateConverter {
@TypeConverter
public static Date toDate(Long timestamp) {
return timestamp == null ? null : new Date(timestamp);
}
@TypeConverter
public static Long toTimestamp(Date date) {
return date == null ? null : date.getTime();
}
}
输出应按日期排序,在 android 6 - android 10 中有效。在 android 11 中无效。 请帮我解决这个问题。
【问题讨论】:
标签: android sqlite group-by android-sqlite sql-order-by