public List findAll() {
String sql = "from Employee e left outer join e.department";
List list = (List) getSession().createQuery(sql).list();
return list;
}
System.out.println(employeeService.findAll());
打印结果:[[Ljava.lang.Object;@5183d589, [Ljava.lang.Object;@511d5d04]
toString方法重写了也没用。
如:select A.name,B.name from A inner join B on A.id = B.id;
上面语句:查询A B两表 进行左关联,以A表为主,B表为附,也就是说,只要A表有记录,不管B表有没有都要查出来
感觉不对吧,应该循环遍历var employees = employeeService.findAll(); 你这样是打印了返回结果的数组地址,不是其中的内容
重写当然没有起到效果了。
createQuery()方法,应该还有一个重载方法,第二个参数是Class类的,你把你需要的类写在这里,就可以了。
我知道问题出在哪了,我本来想解决懒加载问题,然后使用左外连接,我没有加fetch关键字,导致查出来是Employee和Department的对象集合,并不是Employee的对象集合。
sql语句应该是这样的:String sql = "from Employee e left outer join fetch e.department";