1. 程式人生 > >hibernate關於hql的左外連線查詢

hibernate關於hql的左外連線查詢

左外連線查詢

            最近小弟遇到寫hql的左外連線查詢,是關於按照sql語句寫出來的始終出錯,然後百度上面找方法,我的查詢在實體對映檔案裡面是沒有配關係的,只是在兩張表裡面都存在相同的欄位罷了,網上的教程說,在實體對映檔案配置什麼什麼關係的,在我這裡來好像反而不夠用了,然後就各種找錯,最後終於弄出來了.

       小弟我也剛畢業,也許還有更好的方法,但是我實在是沒有找到,就只有先將就著這樣用了!

       廢話不多說,下面是程式碼!!!

      關係表

      Supplier    --    供應商                                            SupplierType  --  供應商類別

      supId               供應商編號                                     typeId             供應商類別編號

      supName        供應商名稱                                     typeName      供應商類別名稱

      supPhone       供應商電話                                     typeBak          供應商備註

      supAddress     供應商地址

      typeId             

供應商類別編號

      supBak            供應商備註

      注:兩張表沒有配置級聯關係,只存在一個相同的typeId屬性

      hql語句:

      String hql = " select sup.supId,sup.supName,sup.supPhone,sup.supAddress,type.typeId,type.typeName as supBak from Supplier as sup,SupplierType as type " +

                " where sup.typeId = type.typeId and sup.typeId = ?";

     List<Object> list = getCurrentSession().createQuery(hql).list();

      如果要對映到供應商上面講供應商類別名稱顯示出來   可以給type.typeName as supBak這樣查出來的資料就是Object型別的資料,

      如果不在供應商一起顯示出類別名稱,就不用type.typeName as supBak,但是查出來的資料依然是Object型別的,需要在外部強轉成相應的型別即可!

       List<Supplier> reslist=new ArrayList<Supplier>();
       if(list != null && list.size() > 0){
          for (Object d : list) {
             Object[] objs = (Object[])d;
             Supplier sup = new Supplier((int)objs[0],(String)objs[1],(String)objs[2],(String)objs[3],(int)objs[4],(String)objs[5]);
                 reslist.add(sup);
           }
       }

       如此便返回了一個相應的物件集合,將類別名稱也封裝進了供應商當中,頁面可以直接通過supplier.supBak顯示出供應商類別的名稱

       雖然感覺漏洞百出,但是效果基本上出來了,如果有大神知道更好的方法,請告訴我一下,謝謝!小弟也剛出道,啥都不懂,望大家指點,互相進步!!!

相關推薦

SQLite連線查詢有重複欄位處理方法

SQLite左外連線查詢有重複欄位處理方法 sqlite在連表查詢過程中,當主表和副表有相同的欄位時,縱然結果正確,但是在處理查詢結果時,在取主表的欄位但會返回副表的欄位值。 現有表ZWAMESSAGE和表ZWAMEDIAITEM,其中兩表中有相同的三個欄位, 執行下面語句

hibernate關於hql的連線查詢

左外連線查詢             最近小弟遇到寫hql的左外連線查詢,是關於按照sql語句寫出來的始終出錯,然後百度上面找方法,我的查詢在實體對映檔案裡面是沒有配關係的,只是在兩張表裡面都存在相

Hibernate中用left join(連線查詢對映中沒有關聯關係的兩個表記錄問題

public class SplitSummary extends PubBean { // 結算賬單開始日期 private String startDate = ""; // 結算賬單結束日期 private String endDate = ""; // 店鋪編號 private Strin

mysql 資料庫查詢語句 連線連線 和內連線區別

 左外連結查詢:A  left join  B  on  conidtion  where condition       用A表 的全部資料去匹配 B表 B表無匹配資料時用null代替                       左聯左不丟資料  右外連線查詢:A  ri

表的複雜查詢----多表查詢、兩表的條件連線、內連線(自連線)、連線、右連線、子查詢、分頁查詢

基於兩個或兩個以上的表或檢視的查詢。例如:emp和dept是兩張表。(這兩張表的deptno是共同欄位)    ①通過什麼條件把兩張表關聯(如果不使用條件關聯將產生行數乘積的合集---笛卡爾集)例子:emp表字段包含:每行有自己的名字和id以及自己的上級的id,同時自己的上級

關於多表查詢sql常用的連線語句:連線、右連線、內連線

1)內聯接:    內聯接使用比較運算子(使用像 =  或 <> 之類的比較運算子)根據每個表共有的列的值匹配兩個表中的行,根據這兩張表中相同列的條件,得出其      交集。例如:  

SQL的連線連線連線連線

a表     id   name                      b表     id     &nb

hibernate 迫切連線

非迫切:返回list中每部分是陣列(不牽手) 迫切:返回list每部分是物件(牽手,只需將左表放入集合中)  //dept業務層 package com.kgc.biz; import java.util.List; import org.hibernate.Hibe

hibernate 連線

和SQL語句一樣,HQL也支援各種各樣的連線查詢            連線型別                 &nbs

資料庫的連線、內連線連線,全連線

Students表和Advisors表 一、內連線 按照Advistor_ID進行表的合併,合併後的資料只有兩個表中Advistor_ID都有的值,對應的行    二、左外連線 按照Advistor_ID進行的左外連接合並,保證表Students中Advistor_ID的

連線連線連線),右連線(右連線),全連線(交叉連線

有兩個表A和表B。表A結構如下: Aid:int;標識種子,主鍵,自增ID Aname:varchar 資料情況,即用select * from A出來的記錄情況如下圖1所示:   圖1:A表資料 表B結構如下: Bid:int;標識

《資料演算法:Hadoop_Spark大資料處理技巧》艾提拉筆記.docx 第1章二次排序:簡介 19 第2章二次排序:詳細示例 42 第3章 Top 10 列表 54 第4章連線 96 第5

《資料演算法:Hadoop_Spark大資料處理技巧》艾提拉筆記.docx       第1章二次排序:簡介 19 第2章二次排序:詳細示例 42 第3章 Top 10 列表 54 第4章左外連線 96 第5章反轉排序 127 第6章

MySQL之內連線()連線、右()連線詳解

用兩個表(a_table、b_table),關聯欄位a_table.a_id和b_table.b_id來操作一下內連線,左(外)連線,右(外)連線。 MySQL:Navicat 資料庫表:a_table、b_table 主題:內連線、左連線(左外連線)、右連線(右外連線) 建表語句:

SQL的四種連線-連線、右連線、內連線、全連線

聯接條件可在FROM或WHERE子句中指定,建議在FROM子句中指定聯接條件。WHERE和HAVING子句也可以包含搜尋條件,以進一步篩選聯接條件所選的行。     聯接可分為以下幾類:     1、內聯接(典型的聯接運算,使用像 =  或 <> 之類的比較運算

mySql內連線,連線和右連線,

1.使用連線查詢的場景 將多張表進行記錄的連線查詢(按照某個欄位指定的條件進行資料的拼接); 進行資料的拼接(兩張表的內容顯示在一個結果表中 使用連線查詢) 最終的結果是:記錄數有可能變化,欄位數一定會增加(至少兩張表的合併) 意義:在使用者檢視資料的時候,顯示的資料

mysql資料庫(3)--內,連線查詢、子查詢、合併、分頁【入門】

可以參照前兩個帖子,按順序的,mysql資料庫(1)有完整的建表語句 mysql資料庫(1)---簡單查詢 mysql資料庫(2)---單行函式、多行函式、分組查詢   -- 簡單查詢語句的完整語法 /*完整語法 SELECT 查詢列表 FROM 表名 WH

深入理解SQL的四種連線-連線、右連線、內連線、全連線

1、內聯接(典型的聯接運算,使用像 = 或 <> 之類的比較運算子)。包括相等聯接和自然聯接。 內聯接使用比較運算子根據每個表共有的列的值匹配兩個表中的行。例如,檢索 students和courses表中學生標識號相同的所有行。 2、外聯接。外聯接

sql中什麼時候用內連線查詢,什麼時候用連線查詢?用起來好像一樣啊!

我用內連線查詢和外連線查詢的結果是一樣的,兩者有什麼不同? 需要查詢兩張表同時存在的資料,使用內連線需要查詢兩張表中一張表存在,另一張表不存在的時候使用左外連結 或 右外連結內連線的查詢結果都是滿足連線條件的元組。但有時我們也希望輸出那些不滿足連線條件的元組資訊。比如,我們

請說說什麼是連線,連線,右連線

兩個表:A(id,name)資料:(1,張三)(2,李四)(3,王五)B(id,name)資料:(1,學生)(2,老師)(4,校長)左連線結果:select A.*,B.* from A left join B on A.id=B.id;1 張三 1 學生2 李四 2 老師3

sql語句連線與右連線的寫法

左外連線: 寫法一: select b.service_gid,c.gid from table1 b,table2 c where b.service_gid= c.gid(+)寫法二: select b.service_gid,c.gid from tab