I am new to the hibernate. Can some one explain why the first query gets the dump results? thanks!
shop entity
....
@OneToMany(mappedBy = "shop")
private Collection<Product> productCollection;
....
product entity
....
@JoinColumn(name = "shopId", referencedColumnName = "id")
@ManyToOne
private Shop shop;
....
query1 result
from Shop s left join fetch s.productCollection
shop1 : product1 product2 product3 product4 product5 product6 product7 product8 product9 product10 product11
shop1 : product1 product2 product3 product4 product5 product6 product7 product8 product9 product10 product11
shop1 : product1 product2 product3 product4 product5 product6 product7 product8 product9 product10 product11
shop1 : product1 product2 product3 product4 product5 product6 product7 product8 product9 product10 product11
shop1 : product1 product2 product3 product4 product5 product6 product7 product8 product9 product10 product11
shop1 : product1 product2 product3 product4 product5 product6 product7 product8 product9 product10 product11
shop1 : product1 product2 product3 product4 product5 product6 product7 product8 product9 product10 product11
shop1 : product1 product2 product3 product4 product5 product6 product7 product8 product9 product10 product11
shop1 : product1 product2 product3 product4 product5 product6 product7 product8 product9 product10 product11
shop1 : product1 product2 product3 product4 product5 product6 product7 product8 product9 product10 product11
shop1 : product1 product2 product3 product4 product5 product6 product7 product8 product9 product10 product11
shop2 : product12
query2 result
from Product p right join fetch p.shop
product1 : shop1
product2 : shop1
product3 : shop1
product4 : shop1
product5 : shop1
product6 : shop1
product7 : shop1
product8 : shop1
product9 : shop1
product10 : shop1
product11 : shop1
product12 : shop2
ps. if you need more information, please let me know.
Use natural join instead of left outer join. This is happening because you have shop1 in multiple products. For every product it will try to join with shop1.
Edit 1: Another JPA provider( hibernate ) specific solution is using private Set<Product> productCollection;
instead of private Collection<Product> productCollection;
That will fetch unique result.
Hope it works.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.