一 内连接(以客户和联系人为例,一个客户对应多个联系人)
内联系关注的是两张数据表之间的对应关系,如果两张表中存在没有对应关系的数据,则在内连接查询中,不会查出来;普通的SQL语句如下:
select * from t_cusum c,t_linkman l where c.cid = l.lcid 或者 select * from t_custum c inner join t_linkman l on c.cid = l.lcid
//c.linkmans 是Custum实体类中存放多个联系人的set集合名称,返回的list 集合是Object数组形式
Query query = session.createQuery("from Custum c inner join c.linkmans");
List<Object[]> list = query.list();
for(Object[] objs :list)
System.out.println(Arrays.toString(objs));
二 迫切内连接,跟一般内连接只是多了一个关键字,返回的list是对象形式
Query query = session.createQuery("from Custum c inner join fetch c.linkmans");
List<Custum> list = query.list();
三 左外连接
Query query = session.createQuery("from Custum c left outer join c.linkmans");
List<Object[]> list = query.list();
四 迫切左外连接
Query query = session.createQuery("from Custum c left outer join fetch c.linkmanss");
List<Custum> list = query.list();