[英]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.