簡體   English   中英

在JPQL中,是否可以使用列表作為參數編寫“選擇新的”?

[英]In JPQL, is it possible to write a “select new” with a list as parameter?

我想知道是否可以用列表作為參數編寫“選擇新”查詢。

例如,一方面,我有一張桌子“父親”和一張桌子“孩子”。 一個孩子只有一個父親,一個父親有多個孩子。 另一方面,我有一個對象“ FatherDto”,構造函數需要一個“父親”對象和一個子代列表。

在JPQL中可以寫類似

SELECT new FatherDto(fat, childrenList) 
FROM fat, (select new Child(ch) from children ch where ...) as childrenList from children child
WHERE ...

目的是僅使用一個查詢就可以獲取一個父親列表和一個孩子列表。

不,您不能這樣做,因為“子查詢可以在WHERE或HAVING子句中使用”(來自規范)。

此外,構造函數必須僅獲得single_values_path_expression。 規范摘錄:

select_clause ::= SELECT [DISTINCT] select_item {, select_item}*
select_item ::= select_expression [ [AS] result_variable]
select_expression ::=
  single_valued_path_expression |
  scalar_expression |
  aggregate_expression |
  identification_variable |
  OBJECT(identification_variable) |
  constructor_expression
constructor_expression ::=
  NEW constructor_name ( constructor_item {, constructor_item}* )
constructor_item ::=
  single_valued_path_expression |
  scalar_expression |
  aggregate_expression |
  identification_variable
aggregate_expression ::=
  { AVG | MAX | MIN | SUM } ([DISTINCT] state_valued_path_expression) |
  COUNT ([DISTINCT] identification_variable | state_valued_path_expression |
      single_valued_object_path_expression) |
  function_invocation

並且我不確定在new FatherDto(fat, childrenList) childrenList中是否將其視為路徑表達式。

暫無
暫無

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

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