2012-05-10 32 views
1

我有这个疑问在MySQL:如何在JPA中创建此本机查询?

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查询,看看它是否工作。

+0

运行mysql中相同的查询试图为本地查询应该给予同样的结果。 – beerbajay

+0

@beerbajay它给出了相同的结果,但它在jpa中做了相同的查询3次,为什么? –

+0

听起来像其他代码多次调用'getListAverageGenres';查询本身应该返回相同的两行。尝试使用调试器来查看方法何时被调用。 – beerbajay

回答