我在我的项目中使用GreenDAO。
我有一个聊天表,其中包含所有消息。我想按chat_id
分组,并按消息的时间戳降序排列消息。
所以我想获取的是一个包含用户每次聊天的最新消息的列表。
这是我正在使用的代码:
Chats.queryBuilder()
.orderDesc(ChatsDAO.Properties.TimeStamp)
.where(ChatsDAO.Properties.UserId.eq(user_id))
.where(new WhereCondition.StringCondition("1 GROUP BY chat_id"))
.list();
但仍然,上面的代码为我提供了一个列表,其中包含每个聊天的第一条消息,而不是最近的消息。
有什么方法可以使用greenDAO进行原始查询并选择我想要的吗?
您可以按照以下方法使用GreenDAO进行原始查询。另外,检查link
Query<User> query = userDao.queryBuilder().where(
new StringCondition("_ID IN " +
"(SELECT USER_ID FROM USER_MESSAGE WHERE READ_FLAG = 0)")
).build();