有些实体具有@OneToOne
关系。
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;
}
当我选择Region
实体时,我预期会在下面。
SELECT *
FROM region r
LEFT JOIN polygon p
on r.polygon_pk = p.pk
但是实际查询在下面
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 = ?;
...
我们目前无法删除@OneToOne
上的Polygon
关系。
那么,我做错了什么事?