@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]