国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

JPA的查詢語言:JPQL的關(guān)聯(lián)查詢

開發(fā) 后端
本文主要講解了JPA的查詢語言,從一關(guān)聯(lián)到多的查詢和從多關(guān)聯(lián)到一的查詢來簡單說說關(guān)聯(lián)查詢。詳細(xì)請看下文

從一關(guān)聯(lián)到多的查詢和從多關(guān)聯(lián)到一的查詢來簡單說說關(guān)聯(lián)查詢。

實(shí)體Team:球隊(duì)。

實(shí)體Player:球員。

球隊(duì)和球員是一對多的關(guān)系。

Team.java:

  1. package com.cndatacom.jpa.entity;  
  2.    
  3. import java.util.HashSet;  
  4. import java.util.Set;  
  5.    
  6. import javax.persistence.CascadeType;  
  7. import javax.persistence.Column;  
  8. import javax.persistence.Entity;  
  9. import javax.persistence.FetchType;  
  10. import javax.persistence.GeneratedValue;  
  11. import javax.persistence.Id;  
  12. import javax.persistence.OneToMany;  
  13. import javax.persistence.Table;  
  14.    
  15.    
  16. /**  
  17.  * 球隊(duì)  
  18.  * @author Luxh  
  19.  */ 
  20. @Entity 
  21. @Table(name="team")  
  22. public class Team{  
  23.    
  24.     @Id 
  25.     @GeneratedValue 
  26.     private Long id;  
  27.        
  28.     /**球隊(duì)名稱*/ 
  29.     @Column(name="name",length=32)  
  30.     private String name;  
  31.        
  32.     /**擁有的球員*/ 
  33.     @OneToMany(mappedBy="team",cascade=CascadeType.ALL,fetch=FetchType.LAZY)  
  34.     private Set<Player> players = new HashSet<Player>();  
  35.    
  36.     //以下省略了getter/setter方法   
  37.    
  38.     //......  

Player.java:

  1. package com.cndatacom.jpa.entity;  
  2.    
  3.    
  4. import javax.persistence.CascadeType;  
  5. import javax.persistence.Column;  
  6. import javax.persistence.Entity;  
  7. import javax.persistence.GeneratedValue;  
  8. import javax.persistence.Id;  
  9. import javax.persistence.JoinColumn;  
  10. import javax.persistence.ManyToOne;  
  11. import javax.persistence.Table;  
  12.    
  13.    
  14. /**  
  15.  * 球員  
  16.  * @author Luxh  
  17.  */ 
  18. @Entity 
  19. @Table(name="player")  
  20. public class Player{  
  21.        
  22.     @Id 
  23.     @GeneratedValue 
  24.     private Long id;  
  25.        
  26.     /**球員姓名*/ 
  27.     @Column(name="name")  
  28.     private String name;  
  29.        
  30.     /**所屬球隊(duì)*/ 
  31.     @ManyToOne(cascade={CascadeType.MERGE,CascadeType.REFRESH})  
  32.     @JoinColumn(name="team_id")  
  33.     private Team team;  
  34.        
  35.     //以下省略了getter/setter方法  
  36.    
  37.         //......  

1、從One的一方關(guān)聯(lián)到Many的一方:

查找出球員所屬的球隊(duì),可以使用以下語句:

  1. SELECT DISTINCT t FROM Team t JOIN t.players p where p.name LIKE :name 

或者使用以下語句:

  1. SELECT DISTINCT t FROM Team t,IN(t.players) p WHERE p.name LIKE :name 

上面兩條語句是等價(jià)的,產(chǎn)生的SQL語句如下:

  1. select 
  2.     distinct team0_.id as id0_,  
  3.     team0_.name as name0_  
  4. from 
  5.     team team0_  
  6. inner join 
  7.     player players1_  
  8.         on team0_.id=players1_.team_id  
  9. where 
  10.     players1_.name like ? 

從SQL語句中可以看到team inner join 到player。inner join要求右邊的表達(dá)式必須有返回值。

不能使用以下語句:

  1. SELECT DISTINCT t FROM Team t  WHERE t.players.name LIKE :name 

不能使用t.players.name這樣的方式從集合中取值,要使用join或者in才行。

2、從Many的一方關(guān)聯(lián)到One的一方:

查找出某個(gè)球隊(duì)下的所有球員,可以使用以下查詢語句:

  1. SELECT p FROM Player p JOIN p.team t WHERE t.id = :id 

或者使用以下語句:

  1. SELECT p FROM Player p, IN(p.team) t WHERE t.id = :id 

這兩條查詢語句是等價(jià)的,產(chǎn)生的SQL語句如下:(產(chǎn)生了兩條SQL)

  1. Hibernate:  
  2.     select 
  3.         player0_.id as id1_,  
  4.         player0_.name as name1_,  
  5.         player0_.team_id as team3_1_  
  6.     from 
  7.         player player0_  
  8.     inner join 
  9.         team team1_  
  10.             on player0_.team_id=team1_.id  
  11.     where 
  12.         team1_.id=?  
  13. Hibernate:  
  14.     select 
  15.         team0_.id as id2_0_,  
  16.         team0_.name as name2_0_  
  17.     from 
  18.         team team0_  
  19.     where 
  20.         team0_.id=? 

從Many關(guān)聯(lián)到One的查詢,還可以使用以下的查詢語句:

  1. SELECT p FROM Player p WHERE p.team.id = :id 

這條語句產(chǎn)生的SQL如下:(產(chǎn)生了兩條SQL)

  1. Hibernate:  
  2.     select 
  3.         player0_.id as id1_,  
  4.         player0_.name as name1_,  
  5.         player0_.team_id as team3_1_  
  6.     from 
  7.         player player0_  
  8.     where 
  9.         player0_.team_id=?  
  10. Hibernate:  
  11.     select 
  12.         team0_.id as id0_0_,  
  13.         team0_.name as name0_0_  
  14.     from 
  15.         team team0 

以上從Many到One的關(guān)聯(lián)查詢都產(chǎn)生了兩條SQL,還可以使用join fetch只產(chǎn)生一條SQL語句。查詢語句如下:

  1. SELECT p FROM Player p JOIN FETCH p.team t WHERE t.id = :id 

這條查詢語句產(chǎn)生的SQL如下:

  1. Hibernate:  
  2.     select 
  3.         player0_.id as id1_0_,  
  4.         team1_.id as id2_1_,  
  5.         player0_.name as name1_0_,  
  6.         player0_.team_id as team3_1_0_,  
  7.         team1_.name as name2_1_  
  8.     from 
  9.         player player0_  
  10.     inner join 
  11.         team team1_  
  12.             on player0_.team_id=team1_.id  
  13.     where 
  14.         team1_.id=? 

原文鏈接:http://www.cnblogs.com/luxh/archive/2012/06/02/2531750.html

責(zé)任編輯:林師授 來源: programmer_luxh的博客
相關(guān)推薦

2012-06-02 00:50:29

JPA查詢語言JPQL

2012-06-02 00:45:36

JPA查詢語言JPQL

2009-09-25 10:22:35

Hibernate多表

2017-07-25 15:35:07

MysqlMysql優(yōu)化LIMIT分頁

2020-11-05 10:59:45

Mybatis

2010-06-03 09:24:46

Oracle

2021-09-02 18:36:35

SQLWhereOn

2021-10-12 05:00:27

PandasSQL查詢

2022-11-03 07:30:41

CQLJPQLHQL

2015-03-18 13:18:45

MySQLSQL優(yōu)化

2022-05-11 09:34:15

云原生集群數(shù)倉

2009-06-24 15:57:44

JPQL命名查詢

2023-11-26 23:59:16

PromQL算術(shù)運(yùn)算符

2011-07-20 10:01:22

SQL Server數(shù)關(guān)聯(lián)表

2022-07-05 10:50:31

數(shù)據(jù)庫查詢實(shí)戰(zhàn)

2009-11-13 09:24:58

JPA 2.0Criteria AP

2009-09-29 16:29:40

Hibernate查詢

2009-09-23 09:16:25

Hibernate復(fù)合

2021-12-15 09:00:00

GraphQL安全漏洞

2021-05-11 11:05:43

SAL子查詢
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

红桃av永久久久| 亚洲午夜精品一区 二区 三区| 亚洲一二三级电影| 第一页在线观看| 国产精品久久久久久久久免费樱桃| 亚洲天堂第一区| 老司机精品福利视频| 国产精品制服诱惑| 在线播放一区| 久久久久久久久久网| 亚洲综合色噜噜狠狠| 免费在线你懂的| 日韩精品一区二区三区中文精品| а√天堂中文在线资源8| 亚洲一区二区久久久| jazzjazz国产精品麻豆| 欧美狂欢多p性派对| 91视频免费看| 国产一区不卡在线观看| 欧美大胆性生话| 亚洲黄页视频免费观看| 欧美h视频在线观看| 91啪国产在线| 国产一区二区在线观看免费播放| 97视频免费看| 国产一区视频导航| 视频91a欧美| 国产成人高清在线| 国产成人无吗| 色综合视频一区二区三区高清| 午夜国产一区二区| 在线电影院国产精品| 成人在线免费观看视频网站| 色先锋久久影院av| 精品国产欧美一区二区| 黄色av网站在线看| 欧美视频一区二区三区在线观看 | 青娱乐国产91| 伊甸园亚洲一区| 欧美高清视频在线| 一区二区三区电影大全| 久久久高清一区二区三区| 无码 制服 丝袜 国产 另类| 午夜精品久久久久久久99水蜜桃| 免费看美女视频在线网站| 99精品热视频| 蜜桃av在线免费观看| 中文字幕日韩欧美在线| 亚洲成人99| 日本一区二区三不卡| 看片网站欧美日韩| 免费日韩电影| 日本欧美色综合网站免费| 欧美视频裸体精品| 日韩精品免费| 邻居大乳一区二区三区| 中文字幕在线不卡一区| 日韩在线观看中文字幕| 在线视频不卡一区二区三区| 丁香五月缴情综合网| 中文字幕日韩精品无码内射| 日韩一区二区福利| 成熟亚洲日本毛茸茸凸凹| 中文字幕无码不卡免费视频| 日韩精品在线影院| 影音成人av| 亚洲黄色av| 国产l精品国产亚洲区久久| 亚洲国产精品久久人人爱蜜臀 | 欧美精美视频| 欧洲一区二区在线| 中文字幕第一区综合| 美女免费久久| 午夜精品久久久久久久男人的天堂| 欧美三级午夜理伦三级中文幕| 久久www视频| 午夜av一区二区三区| 日本不卡一二三| 亚洲综合日韩中文字幕v在线| 国产xxx精品视频大全| 国产精品秘入口| 久久免费国产视频| 激情综合色综合久久综合| 亚洲а∨精品天堂在线| 久久久精品在线观看| 久久精品午夜| 在线视频福利| 国色天香2019中文字幕在线观看| 日韩av中文字幕一区二区三区 | 国产精品久久久久91| 国产成人午夜片在线观看高清观看| 四虎精品在线| 久久久久久久久久久亚洲| 紧缚奴在线一区二区三区| 中文字幕在线观| 久久男人av资源网站| 国产成a人亚洲精品| jizz性欧美10| 91精品久久久久久蜜桃| 中文字幕欧美三区| 97精品国产综合久久久动漫日韩 | 欧美群妇大交群中文字幕| 国产aⅴ精品一区二区三区久久| 亚洲欧美日产图| 欧美中文字幕一区| 国产区精品区| 色噜噜狠狠一区二区| 久久黄色av网站| 国产乱一区二区| bt在线麻豆视频| 国产一区二区视频在线免费观看| 亚洲国产精品久久人人爱| 精品女人视频| 久久久久久久久久久久91| 久久综合五月天| 成人深夜视频在线观看| 欧美xx视频| 亚洲精品国产suv一区88| 欧美精品一区二区三区视频 | 国产视频911| 国产成+人+综合+亚洲欧美| 日韩一本精品| 日韩久久久精品| 国产精品国产三级国产在线观看 | 成人动漫视频在线| 亚洲精品成人久久久| 久久美女视频| 免费免费啪视频在线观看| 久热爱精品视频线路一| 成人黄色av电影| 香蕉久久久久久| 黄色影院一级片| 欧美老少配视频| 国产三级精品视频| 日本伊人久久| 亚洲综合欧美在线| 情事1991在线| 亚洲福利视频一区| 欧美日韩视频一区二区三区| а天堂8中文最新版在线官网| 国产高清自拍一区| 欧美日韩精品电影| 日韩国产精品91| 小草在线视频免费播放| 黄色一级片网址| 日韩中文字幕久久| 国产欧美日韩不卡| 欧美色爱综合| 免费在线观看av网站| av动漫免费观看| 欧美xxxx18性欧美| 亚洲女爱视频在线| 欧美三区美女| 久草在线中文最新视频| 国产毛片视频网站| 日本免费一区二区三区视频观看| 欧美午夜精品久久久久久久| 久久精品伊人| 97国产精东麻豆人妻电影| 久久亚洲影音av资源网 | 国产一区二区三区影视| 激情六月丁香婷婷| 2021国产精品视频| 欧美性20hd另类| 麻豆久久久久久| 亚洲精品高潮| 黄视频在线播放| 亚洲精品少妇一区二区| 韩国三级电影久久久久久| 黄色精品在线看| 久久精品国产精品亚洲综合| 四虎国产精品永久在线国在线| 国产www在线观看| 久久精品99| 久久久精品日本| 亚洲午夜成aⅴ人片| 日韩专区中文字幕一区二区| 日韩中文字幕一区二区高清99| 人成在线免费视频| 91精品国产毛片武则天| 国产成人精品免高潮费视频| 日韩美女一区二区三区四区| 国产色婷婷亚洲99精品小说| 一区二区不卡| 亚洲欧美综合久久久久久v动漫| 在线观看av每日更新免费| 特级毛片在线免费观看| 日本精品一区二区三区在线播放视频| 欧美一区中文字幕| 中文字幕在线视频一区| 日韩av一级片| 亚洲另类春色校园小说| caoporn免费在线视频| 亚洲36d大奶网| 免费国产一区| 国产精品高潮粉嫩av| 色阁综合伊人av| 在线观看日韩电影| 久久一夜天堂av一区二区三区 | 91在线精品观看|