多表查询,扩展,补充hql语句报错

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 迫切 加了这个关键字,最终的结果集封装的就是一个对象,不加封装的是一个集合















评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值