org.hibernate.hql.internal.ast.QuerySyntaxException:无法在类 [com.datamodel.PatientDTO] 上找到适当的构造函数

问题描述 投票:0回答:0
@Entity
public class PatientDTO implements Serializable {

  @Column(name = "NAME")
  private String name;

  @Column(name = "GENDER")
  private String gender;

  @OneToMany
  @JoinColumn(name = "CARS")
  private List<Cars> cars;

  @OneToMany
  @JoinColumn(name = "BIKES")
  private List<Bikes> bikes;

  public PatientDTO() {
  }

  public PatientDTO(String name, 
                    String gender,
                    List<Car> cars,
                    List<Bike> bikes) {
    this.name = name;
    this.gender = gender;
    this.cars = cars;
    this.bikes = bikes;
  }
}

我想通过使用 createQuery 加入其他实体 PatientData、Patient、Car、Bike 来创建 PatientDTO 实体的对象 -

createQuery(
"SELECT new com.datamodel.PatientDTO(p.name, p.gender, cars, bikes) "
    + "FROM PatientData pd INNER JOIN pd.patient p "
    + "INNER JOIN pd.patient.vehicles pid "
    + "INNER JOIN pd.cars cars "
    + "INNER JOIN pd.bikes bikes "
    + "WHERE p.id = 55"
, PatientDTO.class)
.asList();

无法使用 createQuery 在构造函数中映射 @oneToMany 列表,并且出现以下错误 -

org.hibernate.hql.internal.ast.QuerySyntaxException:无法在类 [com.datamodel.PatientDTO] 上找到适当的构造函数。预期参数为:java.lang.String、java.lang.String、com.datamodel.Car、com.datamodel.Bike[SELECT new com.datamodel.PatientDTO(p.name, p.gender, cars, bikes) FROM PatientData pd INNER JOIN pd.patient p INNER JOIN pd.patient.vehicles pid INNER JOIN pd.cars cars INNER JOIN pd.bikes bikes WHERE p.id = 55]

hibernate jpa orm jpql hibernate-mapping
© www.soinside.com 2019 - 2024. All rights reserved.