2017-05-14 13 views
0

私は休止状態を初めてお持ちです。最初のクエリがダンプ結果を取得する理由を説明できますか?ありがとう!hibernate joinフェッチダンプ結果

ショップ実体

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

製品のエンティティ

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

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結果

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。より多くの情報が必要な場合は、私に知らせてください。

答えて

2

左外部結合の代わりに自然結合を使用します。これは、shop1が複数の製品に含まれているために発生しています。すべての製品について、shop1に参加しようとします。

編集1:JPAプロバイダ(休止状態)は、特定の溶液は、一意の結果をフェッチするprivate Set<Product> productCollection;代わりにprivate Collection<Product> productCollection;を使用しています。

希望します。

+0

しかし、私はhsqlを使用しているネイティブSQL – shuan

+0

答えの –

+0

の私の最新の編集を参照してください、それはまた、私は理解できるようにいくつかの結果を与える – shuan