<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 14.3\. 關聯(Association)與連接(Join) 我們也可以為相關聯的實體甚至是對一個集合中的全部元素指定一個別名, 這時要使用關鍵字`join`。 ``` from Cat as cat inner join cat.mate as mate left outer join cat.kittens as kitten ``` ``` from Cat as cat left join cat.mate.kittens as kittens ``` ``` from Formula form full join form.parameter param ``` 受支持的連接類型是從ANSI SQL中借鑒來的。 * `inner join`(內連接) * `left outer join`(左外連接) * `right outer join`(右外連接) * `full join` (全連接,并不常用) 語句`inner join`, `left outer join` 以及 `right outer join` 可以簡寫。 ``` from Cat as cat join cat.mate as mate left join cat.kittens as kitten ``` 通過HQL的`with`關鍵字,你可以提供額外的join條件。 ``` from Cat as cat left join cat.kittens as kitten with kitten.bodyWeight > 10.0 ``` 還有,一個"fetch"連接允許僅僅使用一個選擇語句就將相關聯的對象或一組值的集合隨著他們的父對象的初始化而被初始化,這種方法在使用到集合的情況下尤其有用,對于關聯和集合來說,它有效的代替了映射文件中的外聯接 與延遲聲明(lazy declarations). 查看 [第 19.1 節 “ 抓取策略(Fetching strategies) ”](../Text/pr01_split_000.html#performance-fetching "19.1\. 抓取策略(Fetching strategies) ") 以獲得等多的信息。 ``` from Cat as cat inner join fetch cat.mate left join fetch cat.kittens ``` 一個fetch連接通常不需要被指定別名, 因為相關聯的對象不應當被用在 `where` 子句 (或其它任何子句)中。同時,相關聯的對象 并不在查詢的結果中直接返回,但可以通過他們的父對象來訪問到他們。 ``` from Cat as cat inner join fetch cat.mate left join fetch cat.kittens child left join fetch child.kittens ``` 假若使用`iterate()`來調用查詢,請注意`fetch`構造是不能使用的(`scroll()` 可以使用)。`fetch`也不應該與`setMaxResults()` 或`setFirstResult()`共用,這是因為這些操作是基于結果集的,而在預先抓取集合類時可能包含重復的數據,也就是說無法預先知道精確的行數。`fetch`還不能與獨立的 `with`條件一起使用。通過在一次查詢中fetch多個集合,可以制造出笛卡爾積,因此請多加注意。對bag映射來說,同時join fetch多個集合角色可能在某些情況下給出并非預期的結果,也請小心。最后注意,使用`full join fetch` 與 `right join fetch`是沒有意義的。 如果你使用屬性級別的延遲獲取(lazy fetching)(這是通過重新編寫字節碼實現的),可以使用 `fetch all properties` 來強制Hibernate立即取得那些原本需要延遲加載的屬性(在第一個查詢中)。 ``` from Document fetch all properties order by name ``` ``` from Document doc fetch all properties where lower(doc.name) like '%cats%' ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看