HQL 加入三张表

HQL Join with three tables

我在使用 HQL 时遇到了一些问题,因为我是 HQL 的新手。尽管我对“简单查询”没有问题,但我目前遇到了涉及三个表的查询。

我已经学习了一些教程,但我无法找到满足我需要的有效示例。我已尽力解释我的问题:

我有三个不同的表,我们将它们命名为 HOUSESOWNERSOWNERINFOS

给定 townId,我需要列出该城镇的所有房屋包括 namesurname 那个房主。

我做了一个非常简单的图表来显示表之间的联系:

我也不确定应该使用哪种加入策略。任何形式的帮助都将不胜感激,因为解决这个问题是我的首要任务。

提前致谢!

这只是一个模板

class House {

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "fk_town")
    private Town town;

    @OneToMany(mappedBy = "house")
    private List<Owner> owners;

}

class Owner {

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "fk_house")
    private House house;

    @OneToOne
    @JoinColumn(name = "fk_owner_info")
    private OwnerInfo ownerInfo;

}

class OwnerInfo {

    @OneToOne(mappedBy = "ownerInfo", fetch = FetchType.LAZY)
    private Owner owner;

}

使用所有者信息获取所有所有者的最简单情况

from House h inner join fetch h.owners where h.town.id = :townId