SSH框架之Hibernate連接查詢

今天,博主向大家介紹一下Hibernate中的連接查詢

inner join(內連接) 兩邊符合的查出來

left outer join(左外連接) 左邊符合的查出來

right outer join(右外連接) 右邊符合的查出來

full join (全連接,並不常用) 

首先,我們以Book實體類與Types實體類爲例,兩者的關聯鍵爲book.typeidtypes.id
首先是內連接的寫法:

public static List<Bookview> getBookView1(){
		//獲取session對象
		Session session=getSession();
		//第二步:編寫hql語句
		String sql="select new libraryBook.model.Bookview(book.name,btype.name) From Books as book inner join  Types as btype on book.type.id=btype.id";
		//創建query接口
		Query query=session.createQuery(sql);
		//執行query
		List<Bookview> list=query.list();
		session.close();
		return list;
		
	}

HQL語法規則:

存放在一個List對象中, 

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

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

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

java.lang.ClassNotFoundException: Could not load requested class : Bookview

java.lang.ClassNotFoundException: Could not load requested class : Bookview
加載不到該類
在該程序中我們使用的是第二種,注意:在執行是一直提示無法加載到BOOKview類,博主先前也不懂,明明先前已經導包了,後來就在HQL語句中加上了包名,契機發生了。

接着。便是使用where進行連接,這種類似於外連接,較少用
以下是程序代碼:

public static List<Bookview> getBookView(){
		//獲取session對象
		Session session=getSession();
		//第二步:編寫hql語句
		String sql="select new libraryBook.model.Bookview(book.name,btype.name) From Books as book , Types as btype where book.type.id=btype.id";
		//創建query接口
		Query query=session.createQuery(sql);
		//執行query
		List<Bookview> list=query.list();
		session.close();
		return list;
		
	}

注意:只要採取了HQL語句的關聯關係,那麼之前在配置文件 中的所寫關聯便失效了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章