2017-05-16 60 views
0

我正在學習Hibernate,我想知道HQL查詢中JOIN子句的用法。我可能是錯的,但在我看來,你總是可以不做。Hibernate HQL:JOIN真的有必要嗎?

假設我有一個ChildClass實體,它與ParentClass具有映射的@ManyToOne關係。

現在我可以建立一個HQL這樣的查詢:

session.createQuery("FROM ChildClass ch WHERE ch.parentClass.id=1L") 

正如你可以看到我可以過濾由父類的id字段的結果,通過子類訪問它:ch.parentClass.id

如果我想要做相同的SQL,我需要執行聯接,而查詢是以下幾點:

SELECT * FROM ChildTable ch 
JOIN ParentTable p ON (ch.parent_id = p.id) 
WHERE p.id=1; 

如果我得到這個直,在HQL我不需要包括e查詢中的任何JOIN,因爲@ManyToOne映射關係隱式地加入了兩個實體。那麼爲什麼我會在HQL查詢中使用JOIN?有什麼特殊的情況需要JOIN

回答

2

在有些情況下明確指定加入幾種情況是有用的

  1. 你要指定一個不同的聯接型比對應,例如: INNER與OUTER。
  2. 您想要指定一個聯合抓取場景,您不僅希望加入關聯,還希望查詢結果也可以獲取關聯。
相關問題