我在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;



  输出:布鲁斯,摇滚


这在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();
    }



  输出:蓝调,摇滚,蓝调,摇滚,蓝调,摇滚


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

最佳答案

您可以尝试

SELECT DISTINCT genre

关于mysql - 如何在JPA中创建此 native 查询?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10539957/

10-14 12:21
查看更多