简体   繁体   English

休眠联接获取转储结果

[英]hibernate join fetch dump result

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 query1结果

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 query2结果

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. 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. 发生这种情况是因为您在多个产品中都有shop1。 For every product it will try to join with shop1. 对于每种产品,它将尝试加入shop1。

Edit 1: Another JPA provider( hibernate ) specific solution is using private Set<Product> productCollection; 编辑1:另一个JPA提供程序( hibernate )特定的解决方案是使用private Set<Product> productCollection; instead of private Collection<Product> productCollection; 而不是private Collection<Product> productCollection; That will fetch unique result. 那将获得独特的结果。

Hope it works. 希望它能工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM