There are entities in @OneToOne
relationship.
class Region {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long pk;
@OneToOne
@JoinColumn(name = "polygon_pk")
private Polygon polygon;
}
class Polygon {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long pk;
@OneToOne(mappedBy = "polygon", fetch = FetchType.LAZY)
private Region region;
}
I expected below when I select Region
Entity.
SELECT *
FROM region r
LEFT JOIN polygon p
on r.polygon_pk = p.pk
But actual query is below
SELECT *
FROM region r;
SELECT *
FROM polygon p
WHERE p.pk in (?, ?, ?, ?, ...);
-- The query below occurs in the total number.
SELECT *
FROM region r
LEFT JOIN polygon p
on r.polygon_pk = p.pk
where r.pk = ?;
SELECT *
FROM region r
LEFT JOIN polygon p
on r.polygon_pk = p.pk
where r.pk = ?;
SELECT *
FROM region r
LEFT JOIN polygon p
on r.polygon_pk = p.pk
where r.pk = ?;
SELECT *
FROM region r
LEFT JOIN polygon p
on r.polygon_pk = p.pk
where r.pk = ?;
...
We cannot remove @OneToOne
relationship on Polygon
right now.
So, what thing I did wrong?