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