hibernate關聯雙向多對一的join查詢問題

2021-08-31 14:19:32 字數 1508 閱讀 1489

這是從別人那引用過來的**,僅供參考:

1.如果沒有在hibernate配置裡做關聯,在hql裡面是不能用join的。

2.hql裡面的join是沒有"on" 子句的。

3.如果是inner join,join的依據就是事先設計好關聯

4.如果要用left join或right join,那麼要採用referece的方式來寫這個語句

比如:from a left join a.b(這裡一定要寫成 "a.b")

5.有fetch的時候每條記錄只有乙個object,那就是from那個表,所有其他表的資料都要通過referece來

獲取,沒有fetch的時候返回的是乙個object,每個表都是乙個物件。

(right join 不能用 fetch) 。比如:from a left join fetch a.b

computer表:

public class computer implements serializable

public void setid(long id)

public string getname()

public void setname(string name)

public set getusbs()

public void setusbs(set usbs)

}

usb表:

public class usb implements serializable

public void setcomputer(computer computer)

public long getid()

public void setid(long id)

public string getmaker()

public void setmaker(string maker)

}

computer.hbm.xml檔案:

usb.hbm.xml:

查詢語句:

public void findbyall(){

string hql = "select u from usb u join u.computer c";

session sf =hibernatesessionfactory.getsession();

query q = sf.createquery(hql);

list list = q.list();

if(null != list && list.size()>0){

for(int i=0;i"select u from usb u join u.computer c「語句中:

1.只能使用u.compute,而不能直接使用 computer進行關聯,(select u from usb u join computer c:這種寫法是錯誤的)

2.語句中不能出現on

3.inner是被省略掉了,可以寫成inner join!

Hibernate雙向多對多關聯

一 配置雙向多對多關聯 以project類 專案 和emp類 員工 為例 1 建立project類,並需要定義集合型別的emp屬性 public class project public void setpid integer pid public string getpname public vo...

Hibernate雙向多對多關聯

一 配置雙向多對多關聯 以project類 專案 和emp類 員工 為例 1 建立project類,並需要定義集合型別的emp屬性 public class project public void setpid integer pid public string getpname public vo...

Hibernate雙向多對多關聯

一 配置雙向多對多關聯 以project類 專案 和emp類 員工 為例 1 建立project類,並需要定義集合型別的emp屬性 public class project public void setpid integer pid public string getpname public vo...