I’m having some issues with HQL since I’m a newbie with it. Even though I don’t have issues with “simple queries”, I am currently stuck with a query involving three tables.
I have already gone through some tutorials, but I haven’t been able to find a valid example for my needs. I have tried my best to explain my problem:
I have three different tables, let’s name them HOUSES
, OWNERS
, and OWNERINFOS
.
Given a townId
, I need to list all houses from that town, including name
and surname
of that house-owner.
I made a really simple graph to show the connections between tables:
I’m also not sure which join-strategy I should use. Any kind of help would be highly appreciated, since solving this is a priority for me.
Thanks in advance!
Advertisement
Answer
It is just a template
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;
}
The simplest case with fetch all owners with owner info
from House h inner join fetch h.owners where h.town.id = :townId