【问题标题】:Android Greendao - group and order byAndroid Greendao - 分组和排序
【发布时间】:2020-02-18 05:31:11
【问题描述】:

我在我的项目中使用 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 进行原始查询并选择我想要的?

【问题讨论】:

    标签: android sqlite orm greendao


    【解决方案1】:

    您可以使用 GreenDAO 进行原始查询,如下所示。另外,检查link

     Query<User> query = userDao.queryBuilder().where(
     new StringCondition("_ID IN " +
     "(SELECT USER_ID FROM USER_MESSAGE WHERE READ_FLAG = 0)")
     ).build();
    

    【讨论】:

    • 感谢您的建议。试过了。没有帮助。它一直在崩溃。我正在尝试使用 greendao stackoverflow.com/questions/6572110/… 在此链接中执行类似操作
    • .where(new WhereCondition.StringCondition("1 GROUP BY chat_id")) 为什么在查询中使用这个?
    • .where(new WhereCondition.StringCondition("1 GROUP BY chat_id")) 在不使用这个的情况下尝试您的查询 ....
    • 我想按他们的chat_id 对所有消息进行分组。我看到这是在 greendao 中分组的语法。但没关系 - 我使用原始查询来满足我的需要 - 似乎正在工作
    猜你喜欢
    • 2020-05-16
    • 2016-07-20
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    • 2013-06-21
    相关资源
    最近更新 更多