实体/表上的HQL投影

时间:2017-03-31 02:16:49

标签: hibernate hql projection

我有两张一对一关系的桌子 - 人和房子 我尝试使用HQL投影,例如来自Person的Select p.name,p.dob,它返回我的名字和dob罚款。 但是,我不知道如何在HQL中使用投影: 我想把房子包括在内 我想只包括众议院的颜色和年份。

我尝试了SELECT p.firstName, p.lastName p.house FROM Person p" 但是错误了"无法解析属性"。为了做到这一点,我需要做些什么?感谢

1 个答案:

答案 0 :(得分:0)

使用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中,你可以像它一样返回它 SELECT new PersonDTO(p.firstName, p.lastName, h) FROM Person p join p.house h