HQL 查詢多對多 注意

2021-06-18 05:11:49 字數 660 閱讀 7592

hql 查詢多對關係,可以用到語句:

select o from message o join o.inadmins oo where  oo.id = ?  order by o.id desc

這樣就可以根據物件message,裡面的對應多對多物件inadmins 的 id = 某值   查詢出 具體有哪條記錄

非常簡單,不用寫的辛苦,但是,如果是

select o from message o join o.inadmins oo where  oo.id = ?  or o.status = ? order by o.id desc

這樣的多條件查詢,它就會查詢出來重複語句,具體原因,它會取出message裡面的inadmins,這樣就有幾個記錄了

解決:select  distinct  o from message o join o.inadmins oo where  oo.id = ?  or o.status = ? order by o.id desc

乙個物件有多個 list 物件,並且要作為條件進行查詢:

select distinct o from com.bang.model.user o join o.users oo , o.friends ooo where oo.id = ? or ooo.id = ? order by o.id desc

HQL多對多集合查詢

以前做過的一對多,多對一關係比較多,今天遇到了hibernate的多對多查詢,查了下資料,發現還是有些門道的。大概寫法是 比如 人 people 和文件 document people裡面包含乙個 documentlist document裡面包含對應 乙個 peoplelist 查詢某乙個人的文件...

HQL中的一對多查詢

情況 kam中有乙個department,department有多個iata 如果要按照kam的name或者department的name來查,則很簡單 from kam as kam where kam.name and kam.department.name 但是如果是按照iata的名字呢?fr...

HQL中的一對多查詢

問題 kam中有乙個department,department有多個iata 如果要按照kam的name或者department的name來查,則很簡單 from kam as kam where kam.name and kam.department.name 但是如果是按照iata的名字呢?fr...