HQL 加入三张表
HQL Join with three tables
我在使用 HQL 时遇到了一些问题,因为我是 HQL 的新手。尽管我对“简单查询”没有问题,但我目前遇到了涉及三个表的查询。
我已经学习了一些教程,但我无法找到满足我需要的有效示例。我已尽力解释我的问题:
我有三个不同的表,我们将它们命名为 HOUSES
、OWNERS
和 OWNERINFOS
。
给定 townId
,我需要列出该城镇的所有房屋,包括 name
和surname
那个房主。
我做了一个非常简单的图表来显示表之间的联系:
我也不确定应该使用哪种加入策略。任何形式的帮助都将不胜感激,因为解决这个问题是我的首要任务。
提前致谢!
这只是一个模板
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
我在使用 HQL 时遇到了一些问题,因为我是 HQL 的新手。尽管我对“简单查询”没有问题,但我目前遇到了涉及三个表的查询。
我已经学习了一些教程,但我无法找到满足我需要的有效示例。我已尽力解释我的问题:
我有三个不同的表,我们将它们命名为 HOUSES
、OWNERS
和 OWNERINFOS
。
给定 townId
,我需要列出该城镇的所有房屋,包括 name
和surname
那个房主。
我做了一个非常简单的图表来显示表之间的联系:
我也不确定应该使用哪种加入策略。任何形式的帮助都将不胜感激,因为解决这个问题是我的首要任务。
提前致谢!
这只是一个模板
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