休眠联接提取转储结果



我是冬眠的新手。 有人可以解释为什么第一个查询会得到转储结果吗?谢谢!

商店实体

....
@OneToMany(mappedBy = "shop")
private Collection<Product> productCollection;
....

产品实体

....
 @JoinColumn(name = "shopId", referencedColumnName = "id")
@ManyToOne
private Shop shop;
....

查询1 结果

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 

查询2 结果

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

如果您需要更多信息,请告诉我。

使用自然连接而不是左外部连接。发生这种情况是因为您在多个产品中有 shop1。对于每个产品,它将尝试与 shop1 联接。

编辑 1:另一个特定于 JPA 提供程序(休眠(的解决方案正在使用private Set<Product> productCollection;而不是private Collection<Product> productCollection; 这将获取唯一的结果。

希望它有效。

最新更新