這是從別人那引用過來的**,僅供參考:
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...