hql语句报错
这个问题虽然不影响程序 但是看着不是很舒服
解决方案:
多表查询
笛卡尔积
多表查询 书写方式 表明之间用 逗号隔开,这样将多张表里面的数据全部查出来 查出来的方式就是笛卡尔积的方式(完全组合)
这样查出来的数据有很多是无效的数据
可以给多表查询 增加条件 查到想要的信息
内连接
显示内连接
可以通过在设计数据库的时候,表与表之间的关联属性,过滤出有效率的信息

隐式内连接
隐式内连接和显示内连接没有本质的区别
外链接
以一张表为基础,将这张表中的所有数据全部查出来。然后跟另外一张表关联,如果关联到则显示其信息,如果没有关联则不显示为null
左外链接
SELECT * FROM employee e1 LEFT JOIN enterprise e2 ON e1.enterpriseId=e2.id;
右外链接
SELECT * FROM employee e1 RIGHT JOIN enterprise e2 ON e1.enterpriseId=e2.id;
总结:内连接 就是红色的部分。左外连接就是绿+红 右外链接就是 黄+红

试图
SELECT *FROM e1_e2 VIEW;
表的别名
使用表的别名有两种原因
1.为了方便、简捷
2.如果是从重复的表中进行多表查询,则必须使用别名
使用别名的方式有两种

查询总结
1. oid通过对象主键查询
2. hql 推荐
3. criteria 单表查询
4. sql (非常复杂)
5. 对象导航查询
hql的多表查询
内连接
String hql ="from Employee e inner join e.enterprise";
查出来的结果封装的一条记录中也是一个集合
第一条是Employee 职业信息也包含了企业信息
第二条是enterprise企业信息
内容就重要了,迫切内连接 只返回一个对象
String hql ="from Employee e inner join fetch e.enterprise";
左外链接
String hql ="from Employee e left join fetch e.enterprise";
右外连接
String hql ="from Employee e right join fetch e.enterprise";
Fetch 迫切 加了这个关键字,最终的结果集封装的就是一个对象,不加封装的是一个集合