[英]How to get a list to a constructor through jpql query
我需要通過JPQL查詢將列表傳遞給VO(值對象)。 例如:
我的VO課程:
public class FamilyVO {
private String lastName;
private List<Name> names;
public FamilyVO () {
}
public FamilyVO (List<Name> names, String lastName) {
this.names = names;
this.lastName = lastName;
}
}
我的查詢使用new
運算符:
public class FamilyRepositoryBean {
@Override
public List<FamilyVO> findFamilies(Long id) {
StringBuilder jpql = new StringBuilder("SELECT new "+ FamilyVO.class.getName());
jpql.append("(f.names, f.lastName)");
jpql.append(" FROM Family f ");
jpql.append(" WHERE f.id = :pId");
Query query = em.createQuery(jpql.toString());
query.setParameter("pId", id);
return query.getResultList();
}
}
我的實體家庭:
@Entity
public class Family {
@OneToMany(mappedBy = "family")
protected List<Name> names = new ArrayList<Name>();
private String lastName;
public Family() {
}
public List<Name> getNames(){
return names;
}
public String getLastName() {
return lastName;
}
}
我的實體名稱:
@Entity
public class Name {
@NotNull
@ManyToOne(fetch = FetchType.LAZY, optional = false)
private Family family;
public Name() {
}
public Family getFamily(){
return family;
}
}
當我運行此查詢時,會發生以下錯誤:
EJB調用java.lang.IllegalArgumentException上的RuntimeException:org.hibernate.hql.ast.QuerySyntaxException:無法在類上找到合適的構造函數
如果你創建一個帶參數的構造函數; 你應該為構造函數提供沒有參數,明確的;
public FamilyVO (){ }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.