簡體   English   中英

JPA和聚合函數。 如何使用查詢結果?

[英]JPA and aggregate functions. How do I use the result of the query?

我是ORM的新手,我需要一些幫助來理解一些東西。

假設我有以下標准SQL查詢:

SELECT *, COUNT(test.testId) AS noTests FROM inspection
LEFT JOIN test ON inspection.inspId = test.inspId
GROUP BY inspection.inspId

我想在JPA中使用它。

我有一個與Test實體有一對多關系的Inspection實體。 (檢查有很多測試)我試過在JPQL中寫這個:

Query query = em.createQuery("SELECT insp, COUNT(???what???) " +
      "FROM Inspection insp LEFT JOIN insp.testList " +  
      "GROUP BY insp.inspId");

1)如何編寫COUNT子句? 我必須將count應用於測試表中的元素,但testList是一個集合,所以我不能像COUNT(insp.testList.testId)那樣做smth COUNT(insp.testList.testId)

2)假設1已解決,將返回什么類型的對象。 它肯定不是檢驗對象......我如何使用結果?

  1. 您可以為已連接的實體提供別名(使用AS
  2. 您可以創建新對象或帶有返回值的List

所以:

SELECT new com.yourproject.ResultHolder(insp, COUNT(test.testId)) 
    FROM Inspection insp LEFT JOIN  insp.testList AS test GROUP BY insp.inspId

要么

SELECT new list(insp, COUNT(test.testId)) 
    FROM Inspection insp LEFT JOIN  insp.testList AS test GROUP BY insp.inspId

然后,結果可以作為ResultHolder的實例訪問,也可以作為java.util.List ,其中insplist.get(0) ,計數是list.get(1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM