hibernate ,criteria關聯查詢

2021-08-03 09:11:40 字數 929 閱讀 5298

關聯查詢可分為兩種:

a) 實體間有定義關聯關係的(一對多,多對一等)

對已定義關聯關係的,我們可以使用createalias()來建立屬性的別名,然後引用別名進行條件查詢,如:

criteria criteria =session.createcriteria(parent.class); 

criteria.createalias("children", "c").add(expression.eq( "c.name", 

childname));

這樣進行查詢時就可得到關聯查詢後的parent物件結果集。

要注意的是,如果在createalias()之後,又使用了setprojection(如查詢總記錄數),這樣得到的查詢結果集中,每個物件並不是parent型別,而是乙個物件陣列(object),裡邊有乙個parent物件和乙個child物件,需要根據object的類名去判斷是哪個物件。

如果還要恢復預設的結果集狀態,需呼叫

criteria.setresulttransformer(criteria.root_entity);

b) 實體間未定義關聯關係的

對未定義關聯關係的,我們需要使用exist子查詢來輔助,如:

criteria criteria = session.createcriteria(brother.class,"b"); 

detachedcriteria siscri = detachedcriteria.forclass(sister.class,"s");

siscri.add(property.forname("s.fname").eqproperty("b.fname"));

criteria.add(subqueries.exists(siscri.setprojection(projections.property("s.id "))));

**:

Hibernate Criteria 關聯查詢

前面講了criteria看起來比hql順眼多了,接著繼續。如果每個美女都有自己的客戶資源 不要想歪了!那麼需要查詢擁有客戶gates的美女怎麼辦?使用criteria可以有兩種方法 1 detachedcriteria beautycriteria detachedcriteria.forclass...

mysql關聯查詢去重 MySQL 關聯查詢

mysql 關聯查詢 sql資料分析 1週前 mysql 關聯查詢 前面,我們介紹的都是單錶查詢 就是只從一張表中獲取資料 而實際應用的時候,我們都會同時查詢多張表,這裡,我們就介紹下,多表關聯查詢的使用。sql join 用於根據兩個或多個表中的列之間的關係,從這些表中查詢資料 前置知識 主鍵 p...

表關聯查詢

一 內連線和外連線 內連線用於返回滿足連線條件的記錄 而外連線則是內連線的擴充套件,它不僅會滿足連線條件的記錄,而且還會返回不滿足連線條件的記錄,語法如下 oracle 1.select table1.column,table2.column from table1 inner left right...