成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

簡述Hibernate部分查詢語句

開發 后端
Hibernate配備了一種非常強大的Hibernate查詢語句,這種語言看上去很像SQL。但是不要被語法結構上的相似所迷惑,HQL是非常有意識的被設計為完全面向對象的查詢,它可理解如繼承、多態和關聯之類的概念。

Hibernate配備了一種非常強大的Hibernate查詢語句,這種語言看上去很像SQL。本文主要介紹select子句、聚集函數、多態查詢。但是不要被語法結構 上的相似所迷惑,HQL是非常有意識的被設計為完全面向對象的查詢,它可以理解如繼承、多態 和關聯之類的概念。

1. select子句

select 子句選擇將哪些對象與屬性返 回到查詢結果集中. 考慮如下情況:

  1. select mate   
  2. from Cat as cat   
  3.     inner join cat.mate as mate 

該語句將選擇mates of other Cats。(其他貓的配偶) 實際上, 你可以更簡潔的用以下的查詢語句表達相同的含義:

  1. select cat.mate from Cat cat 

Hibernate查詢語句可以返回值為任何類型的屬性,包括返回類型為某種組件(Component)的屬性:

  1. select cat.name from DomesticCat cat  
  2. where cat.name like 'fri%'  
  3. select cust.name.firstName from Customer as cust  

Hibernate查詢語句可以返回多個對象和(或)屬性,存放在 Object[]隊列中,

  1. select mother, offspr, mate.name   
  2. from DomesticCat as mother  
  3.     inner join mother.mate as mate  
  4.     left outer join mother.kittens as offspr 

或存放在一個List對象中,

  1. select new list(mother, offspr, mate.name)  
  2. from DomesticCat as mother  
  3.     inner join mother.mate as mate  
  4.     left outer join mother.kittens as offspr 

也可能直接返回一個實際的類型安全的Java對象,

  1. select new Family(mother, mate, offspr)  
  2. from DomesticCat as mother  
  3.     join mother.mate as mate  
  4.     left join mother.kittens as offspr 

假設類Family有一個合適的構造函數.

你可以使用關鍵字as給“被選擇了的表達式”指派別名:

  1. select max(bodyWeight) as max, min(bodyWeight) as min, count(*) as n  
  2. from Cat cat 

這種做法在與子句select new map一起使用時最有用:

  1. select new map( max(bodyWeight) as max, min(bodyWeight) as min, count(*) as n )  
  2. from Cat cat 

該Hibernate查詢語句返回了一個Map的對象,內容是別名與被選擇的值組成的名-值映射。

3. 聚集函數

HQL查詢甚至可以返回作用于屬性之上的聚集函數的計算結果:

  1. select avg(cat.weight), sum(cat.weight), max(cat.weight), count(cat)  
  2. from Cat cat 

受支持的聚集函數如下:

  1. avg(...), sum(...), min(...), max(...)   
  2.  
  3. count(*)   
  4.  
  5. count(...), count(distinct ...), count(all...)   

你可以在選擇子句中使用數學操作符、連接以及經過驗證的SQL函數:

  1. select cat.weight + sum(kitten.weight)   
  2. from Cat cat   
  3.     join cat.kittens kitten  
  4. group by cat.id, cat.weight  
  5. select firstName||' '||initial||' '||upper(lastName) from Person  

關鍵字distinct與all 也可以使用,它們具有與SQL相同的語義.

  1. select distinct cat.name from Cat cat  
  2.  
  3. select count(distinct cat.name), count(cat) from Cat cat 

3. 多態查詢

一個如下的Hibernate查詢語句:

  1. from Cat as cat 

不僅返回Cat類的實例, 也同時返回子類 DomesticCat的實例. Hibernate 可以在from子句中指定任何 Java 類或接口. 查詢會返回繼承了該類的所有持久化子類 的實例或返回聲明了該接口的所有持久化類的實例。下面的查詢語句返回所有的被持久化的對象:

  1. from java.lang.Object o 

接口Named 可能被各種各樣的持久化類聲明:

  1. from Named n, Named m where n.name = m.name 

注意:***的兩個查詢將需要超過一個的SQL SELECT.這表明order by子句 沒有對整個結果集進行正確的排序. (這也說明你不能對這樣的查詢使用Query.scroll()方法.)

【編輯推薦】

  1. 簡述Hibernate部分查詢語言(一)
  2. Hibernate屬性簡單分析
  3. Struts-Spring-Hibernate案例
  4. Hibernate Sessin接口常用方法
  5. Hibernate事務全面介紹
責任編輯:仲衡 來源: redsaga
相關推薦

2009-09-24 10:15:37

Hibernate查詢

2009-09-23 09:16:25

Hibernate復合

2009-09-25 16:57:49

Hibernate查詢

2009-09-29 16:41:58

Hibernate S

2009-09-24 11:17:32

Hibernate查詢

2009-09-25 12:31:13

Hibernate映射

2009-09-28 13:45:59

Hibernate歷史

2009-09-29 17:22:30

Hibernate S

2009-09-29 10:37:29

Hibernate持久

2009-09-29 15:58:22

Hibernate映射

2011-03-24 11:37:41

Hibernate

2009-09-28 11:12:52

Hibernate O

2009-06-17 14:41:57

Hibernate查詢

2009-09-22 16:04:50

Hibernate連接

2009-09-24 17:28:29

Hibernate S

2009-09-29 09:44:52

Hibernate事務

2009-09-24 18:11:56

Hibernate q

2009-09-25 14:04:09

Hibernate eHibernate h

2010-04-21 10:22:25

Unix 命令

2010-05-27 15:34:30

MySQL語句優化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 神马久久香蕉 | 午夜色婷婷 | 精品国产久 | 亚洲国产精品99久久久久久久久 | 天堂久久久久久久 | 免费成人高清在线视频 | 日韩精品一区二区三区在线播放 | 欧美一区视频 | 国产精品一二三区 | 国产精品美女久久久久aⅴ国产馆 | 中文字幕在线看第二 | 日日夜夜天天 | 日韩中文在线观看 | eeuss国产一区二区三区四区 | 日韩在线视频精品 | 中文字幕国产一区 | 国产欧美日韩一区 | 日本精品视频一区二区 | 黄片毛片免费看 | 成人精品一区二区三区中文字幕 | 国产精品久久久爽爽爽麻豆色哟哟 | 麻豆av在线 | 欧洲视频一区二区 | 精品国产免费一区二区三区演员表 | 国产三级网站 | 亚洲高清在线观看 | 国产精品久久久久久吹潮 | 激情a| 日韩成人免费视频 | 日本成人福利 | 国产人成精品一区二区三 | 精品一区国产 | 91精品国产一区二区三区 | 亚洲精品电影在线观看 | www一级片| 亚洲区一区二 | 欧美精品福利 | 国产一区二区欧美 | 日韩在线欧美 | 国产精品久久久久久久久久软件 | 精品国产第一区二区三区 |