Hibernate的Hql多表操作
阿新 • • 發佈:2019-01-10
專案中Hiberinated的多表操作語法比較詭異,一般不建議使用
內連結
@Test //Hql的多表查詢 //內連結將兩方的資料放入陣列中 public void test(){ Session session = HibernateUtils.openSession(); Transaction tx = session.beginTransaction(); //linkmans為Customeri物件中的Set集合的名稱 String hql = "from Customer c inner join c.linkmans"; Query query = session.createQuery(hql); List<Object[]> list = query.list(); for (Object[] objects : list) { System.out.println(Arrays.toString(objects)); } tx.commit(); session.close(); }
迫切內連結
將linkmans集合裝到Customer物件中
//迫切內連結 //將linkmans集合裝到Customer物件中 @Test public void test2(){ Session session = HibernateUtils.openSession(); Transaction tx = session.beginTransaction(); //linkmans為Customeri物件中的Set集合的名稱 String hql = "from Customer c inner join fetch c.linkmans "; Query query = session.createQuery(hql); List<Customer> list = query.list(); System.out.println(list); tx.commit(); session.close(); }
左外連結
@Test //左外連結 兩方的資料放入陣列中 public void test3(){ Session session = HibernateUtils.openSession(); Transaction tx = session.beginTransaction(); //linkmans為Customeri物件中的Set集合的名稱 String hql = "from Customer c left join c.linkmans "; Query query = session.createQuery(hql); List<Object[]> list = query.list(); for (Object[] objects : list) { System.out.println(Arrays.toString(objects)); } tx.commit(); session.close(); }
右外連線
@Test
//右外連結兩方的資料放入陣列中
public void test4(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
//linkmans為Customeri物件中的Set集合的名稱
String hql = "from Customer c right join c.linkmans ";
Query query = session.createQuery(hql);
List<Object[]> list = query.list();
for (Object[] objects : list) {
System.out.println(Arrays.toString(objects));
}
tx.commit();
session.close();
}