我有一些麻煩與JPA(休眠)和LazyFetching左連接抓取重複
我有一些實體: 任務,報酬,合同
關係(均爲懶惰):
- Quest One2Many獎勵;追求許多許多合同;
- Contract One2Many獎勵;合同Many2Many任務;
- 獎勵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();
的問題是,我recive
一個任務有4個(但它只有2)獎勵(獎勵1,獎勵2,獎勵1,獎勵2)和兩份合同。
我得到的獎勵重複!
我不明白爲什麼!
如果我這樣做:
@Query("select distinct Q from Quest Q left join fetch Q.rewards")
List<Quest> getAllQuestsWithRewardsRew();
我recive一個任務有兩個獎勵(Reward1,Reward2)
爲什麼?爲什麼我有重複?