Hibernate 实体/表上的HQL投影
我有两张一对一的桌子——人和房子 我尝试使用HQL投影,比如Select p.name,p.dob from Person,它会返回name和dob fine。 但是,如果出现以下情况,我不知道如何在HQL中使用投影: 1.我想包括房子在内 2.我只想包括房子的颜色和年份Hibernate 实体/表上的HQL投影,hibernate,hql,projection,Hibernate,Hql,Projection,我有两张一对一的桌子——人和房子 我尝试使用HQL投影,比如Select p.name,p.dob from Person,它会返回name和dob fine。 但是,如果出现以下情况,我不知道如何在HQL中使用投影: 1.我想包括房子在内 2.我只想包括房子的颜色和年份 我试图从Person p中选择p.firstName、p.lastName、p.house,但在“无法解析属性”中出现错误。我需要做什么才能正确执行此操作?谢谢使用HQL实际上非常简单: SELECT p.firstName,
我试图从Person p中选择p.firstName、p.lastName、p.house,但在“无法解析属性”中出现错误。我需要做什么才能正确执行此操作?谢谢使用HQL实际上非常简单:
SELECT p.firstName, p.lastName, h.color, h.year FROM Person p join p.house h
这将返回一个包含这些值的数组
对于你的第二个评论,是的,你可以有一个DTO来做这件事,例如
class PersonDTO {
String firstName;
String lastName;
Hourse hourse;
public PersonDTO(){}
public PersonDTO(String firstName, String lastName, Hourse hourse) {
this.firstName = firstName;
this.lastName = lastName;
this.hourse = hourse;
}
// getter & setter
}
然后在HQL中,您可以像
从Person p join p.house h中选择新PersonDTO(p.firstName,p.lastName,h)谢谢。我能够获得该值。但是是否可以获取整个house对象并将其映射到DTO?因此,由于对象[],需要手动映射我的Person对象,但房子全部返回了?我尝试了:选择p.firstName,p.lastName,h FROM Person p join p.House h
它没有给我错误,但返回null…你能帮我吗?