左连接
迫切左外连接:
LEFT JOIN FETCH 关键字表示迫切左外连接检索策略.
list() 方法返回的集合中存放实体对象的引用, 每个 Department 对象关联的 Employee 集合都被初始化, 存放所有关联的 Employee 的实体对象.
- 查询结果中可能会包含重复元素, 可以通过一个 HashSet 来过滤重复元素
/*
* 测试迫切左外连接(查询一方的时候,就已经将另外一端的数据初始化好了,即使一方没有另外一方的对应数据也要强制查询出来)
*/
@Test
void testLeftJoinFetch() {
//查询部门id等于员工id的所有记录的条数(有重复)
// String hql = "from Department d left join fetch d.emps ";
//方式一去重:通过关键字distinct去重(有几个部门就初始化几个Department对象即可,但是在数据库中显示所有员工的记录数+没有员工的部门记录记录数)
// String hql = "select distinct d from Department d left join fetch d.emps ";
//方式二去重:通过linkedHashSet集合属性
String hql = "from Department d left join fetch d.emps";
List<Department> list = this.s