0

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?

JoonT
  • 655
  • 1
  • 6
  • 20

0 Answers0