Hibernate 实体/表上的HQL投影

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,

我有两张一对一的桌子——人和房子 我尝试使用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, 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…你能帮我吗?