2014-12-03 35 views
0

我們需要通過發送器獲取最後發佈的消息組。JAVA Persistence OrderBy在GroupBy之前

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);

感謝您的幫助對不起我的英語。

回答

0

我的解決辦法是先得到所有聯繫人,然後從接觸得到最後發送消息(兩個查詢,而不是一個大的。

0

也許這樣嗎?

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); 
+0

不是真的和JPQL不接受子查詢。 – 2014-12-05 15:53:38

相關問題