JPA中的子查询

时间:2012-01-22 18:05:46

标签: jpa jpql

我正在尝试将以下SQL查询编写为JPA查询。 SQL查询有效(MySQL数据库),但我不知道如何翻译它。我在第一个FROM之后立即收到错误令牌。这里可能还有其他错误,因为我无法找到有关如何在from部分,别名等中进行子查询的任何指南。

SQL查询

SELECT tbl.* from (
  SELECT u.*, COUNT(u.id) AS question_count FROM app_user AS u 
        INNER JOIN question AS q ON u.id = q.user_id GROUP BY u.id  
) AS tbl ORDER BY tbl.question_count DESC LIMIT 10;

JPA查询:

SELECT tbl FROM (SELECT u, COUNT(u.id) question_count FROM User u 
INNER JOIN u.questions q ON u.id = q.user_id GROUP BY u.id) tbl 
ORDER BY tbl.question_count LIMIT 10")

1 个答案:

答案 0 :(得分:0)

我现在无法对此进行任何测试,但有些内容如下:

final String queryStr = "SELECT u, COUNT(u.id) FROM User u, Questions q WHERE u.id = q.user_id GROUP BY u.id ORDER BY COUNT(u.id) DESC";
Query query = em().createQuery(queryStr);
query.setMaxResults(10);
List<Object[]> results = query.getResultList(); //Index [0] will contain the User-object, [1] will contain Long with result of COUNT(u.id)