1.交叉連接
select ?* from A ,B
2.內連接 ??可以省略inner join
? ?隱式內連接:
select * from A,B where A.id = B.aid;
? ?顯式內連接:
select * from A inner join B on A.id = B.aid;
? ?迫切內連接:
需要加上fetch關鍵字
內連接查詢兩者共有的屬性數據。
3.外連接 outer join
? 左外連接:
select * from A left outer join B on A.id= B.aid;
? 右外連接:
select * from A right outer join B on A.id = B.aid;
迫切左外連接:需要加上fetch關鍵字,返回的是對象,不再是數組。
外連接查詢共有屬性和一方連接的屬性
?
Session session = HibernateUtils.getCurrentSession();Transaction tx = session.beginTransaction();// SQL:SELECT * FROM cst_customer c INNER JOIN cst_linkman l ON// c.cust_id = l.lkm_cust_id;// HQL:內連接 from Customer c inner join c.linkMans/** List<Object[]> list = session.createQuery(* "from Customer c inner join c.linkMans").list(); for (Object[]* objects : list) { System.out.println(Arrays.toString(objects)); }*/// HQL:迫切內連接 其實就在普通的內連接inner join后添加一個關鍵字fetch. from Customer c inner// join fetch c.linkMansList<Customer> list = session.createQuery("select distinct c from Customer c inner join fetch c.linkMans").list();// 通知hibernate,將另一個對象的數據封裝到該對象中for (Customer customer : list) {System.out.println(customer);}tx.commit();
?