Hibernate中,left join、inner join以及left join fetch區別(轉)


標簽: hibernate hql inner join left right 雜談 分類: SQL 原文地址:http://m33707.iteye.com/blog/829725 Select <要查詢的字段> From    [Outer] Join On LEFT JOIN返回”left_table”中所有的行盡管在” right_table”中沒有相匹配的數據。 RIGHT JOIN返回”right_table”中所有的行盡管在”left_table”中沒有相匹配的數據。 INNER JOIN返回的結果集是兩個表中所有相匹配的數據。 Fetch: 在我們查詢Parent對象的時候,默認只有Parent的內容,並不包含childs的信息,如果在Parent.hbm.xml里設置lazy="false"的話才同時取出關聯的所有childs內容. 問題是我既想要hibernate默認的性能又想要臨時的靈活性該怎么辦? 這就是fetch的功能。我們可以把fetch與lazy="true"的關系類比為事務當中的編程式事務與聲明式事務,不太准確,但是大概是這個意思。 Query q = session.createQuery("from Parent as parent "+" left outer join fetch parent.childs " +" where parent.id = :id"); 總之,fetch就是在代碼這一層給你一個主動抓取得機會. 可以在lazy="true"的情況下把fetch去掉,就會報異常. 當然,如果lazy="false"就不需要fetch了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM