我正在使用JPQL,並希望在構造函數表達式中接收一些常規參數和集合以直接創建DTO對象。但是,如果集合是空的,我總是得到一個錯誤,因爲他不找到合適的構造函數:JPQL:在構造函數表達式中接收集合
的DTO級看起來如下:
public class DTO {
private long id;
private String name;
private Collection<Child> children;
public DTO (long id, String name, Collection<Child> children){
this.id = id;
this.name = name;
this.children= children;
}
}
的兒童類:
public class Child {
private String name;
private int age;
}
現在構造函數表達式看起來如下:
return (List<DTO>) getEm().createQuery("SELECT DISTINCT NEW de.DTO(p.id, p.name, p.childs)
FROM Parent p").getResultList();
當前的問題是,t如果Collection p.childs爲空,它表示它沒有找到正確的構造函數,它需要(long,String,Child)而不是(long,String,Collection)。
你有任何一種解決方案,或者它是根本無法在構造器表達式中使用集合?
哦,還有一件事:如果我輕鬆創建兩個構造函數(...,集合孩子和...,孩子孩子)我沒有結果,但沒有錯誤...在我的眼睛裏並不真正meetiyng: -/
我想你已經忘記發佈你的'Parent'類了。此外,「孩子」的複數形式是「孩子」。 – Behrang 2011-05-14 11:37:08
您是否嘗試添加條件來查詢 - 「WHERE p.childs不是空和尺寸(p.childs)<> 0」 – 2011-05-14 12:15:43