關聯查詢可分為兩種:
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...