【问题标题】:JAVA Persistance OrderBy before a GroupByGroupBy 之前的 JAVAX 持久性 OrderBy
【发布时间】:2015-02-01 09:53:11
【问题描述】:

我们需要通过发送者获取最后发布的消息组。

Query query = em.createQuery("SELECT m FROM Message m " + "JOIN m.transmitter " + "JOIN m.recipient " + "WHERE m.transmitter = :u1 " + "OR m.recipient = :u1 " + "GROUP BY m.recipient,m.transmitter " + "ORDER BY m.sendDate DESC"); query.setParameter("u1", actualUser);

但我们需要这样的东西来获取最旧的消息:

Query query = em.createQuery("SELECT m FROM Message m " + "JOIN m.transmitter " + "JOIN m.recipient " + "WHERE m.transmitter = :u1 " + "OR m.recipient = :u1 " + "ORDER BY m.sendDate DESC" "GROUP BY m.recipient,m.transmitter "); query.setParameter("u1", actualUser);

感谢您的帮助,对不起我的英语。

【问题讨论】:

    标签: java jakarta-ee persistence jpql


    【解决方案1】:

    我的解决方案是先获取所有联系人,然后从联系人获取最后发送消息(两个查询而不是一个大查询。

    【讨论】:

      【解决方案2】:

      可能是这样的?

      Query query = em.createQuery("SELECT m FROM Message m " +
                      "WHERE m.sendDate = (" +
                      "SELECT MAX(m.sendDate) FROM MESSAGE m "
                      "JOIN m.transmitter t " +
                      "JOIN m.recipient r " +
                      "WHERE t = :u1 " +
                      "OR r = :u1)");
              query.setParameter("u1", actualUser);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-01
        • 2016-01-22
        • 1970-01-01
        • 1970-01-01
        • 2014-10-21
        相关资源
        最近更新 更多