JPA(Hibernate)とLazyFetchingに問題があります
私はいくつかのエンティティを持っています:クエスト、報酬、契約
関係(すべてレイジー):
- クエスト One2Many 報酬; クエスト Many2Many 契約;
- 契約 One2Many 報酬; Many2Many クエストを契約します。
- Many2One クエリに報酬を与える。Many2One 契約に報酬を与える。
DB には次のデータが含まれています。Quest1 には Reward1、Reward2、および Contract1、Contract2 があります。
場合によっては、報酬と契約を備えたクエストが必要になるため、JPArepository で行います。
@Query("select Q from Quest Q left join fetch Q.rewards left join fetch Q.contracts")
List<Quest> getAllQuestsWithRewardsAndContracts();
問題は、
4つ(ただし2つしかない)の報酬(Reward1、Reward2、Reward1、Reward2)と2つのContractを含む1つのクエストを受け取ることです。
報酬が重複します!
理由がわかりません!
私がそうする場合:
@Query("select distinct Q from Quest Q left join fetch Q.rewards")
List<Quest> getAllQuestsWithRewardsRew();
2つの報酬(Reward1、Reward2)で1つのクエストを受け取ります
なんで ?重複があるのはなぜですか?