如何在JPA中创建此本机查询?

时间:2012-05-10 18:19:52

标签: mysql jpa jpa-2.0

我在MySQL中有这个查询:

SELECT genre 
FROM genre g, person_genre pg, rfid rfid, room room 
WHERE 
    pg.id_genre = g.id and 
    pg.id_person = rfid.id_person and 
    rfid.id = room.id_rfid 
GROUP BY 
    g.genre
HAVING COUNT(*) > 1;
  

输出:Blues,Rock

在mysql查询浏览器中工作得很好,所以我试图在jsf 2和jpa中使用相同的查询,所以我这样做了:

public List<String> getListAverageGenres(){
        return em.createNativeQuery("SELECT genre " +
                                    "FROM genre g, person_genre pg, rfid rfid, room room " +
                                    "WHERE " +
                                        "pg.id_genre = g.id and " +
                                        "pg.id_person = rfid.id_person and " +
                                        "rfid.id = room.id_rfid " +
                                    "GROUP BY " +
                                        "g.genre " +
                                    "HAVING COUNT(*) > 1").getResultList();
    }
  

输出:Blues,Rock,Blues,Rock,Blues,Rock

我不知道为什么同一个查询多次调用它。 我认为是因为它是本机查询所以我正在尝试构建一个jpa查询,看它是否有效。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用

SELECT DISTINCT genre