1. 程式人生 > >hibernate中使用QBC進行多表條件查詢

hibernate中使用QBC進行多表條件查詢

兩個表關係如上圖,區域和分割槽為一對多的關係,對分割槽進行條件查詢,需要用到區域裡的省市區屬性,這樣就需要對這兩張表進行查詢。

Criteria criteria = this.getSession().createCriteria(Subarea.class);
criteria.createAlias("region", "re");
criteria.add(Restrictions.like("re.city","%"+subarea.getRegion().getCity()+"%"));

這裡新增條件時,不能直接用region.city,要先給region取個別名,然後用這個別名.屬性,進行新增條件

要注意的是,如果在createAlias()之後,又使用了setProjection(如查詢總記錄數),這樣得到的查詢結果集中,每個物件並不是Subarea型別,而是一個物件陣列(Object[]),裡邊有一個Subarea物件和一個Region物件,需要根據object的類名去判斷是哪個物件。
如果還要恢復預設的結果集狀態,需呼叫
criteria.setResultTransformer(Criteria.ROOT_ENTITY);