关于hibernate中的fetch属性
程序员文章站
2022-04-25 22:11:59
...
fetch用来指定关联对象的抓取方式
主体对象:就是当前映射文件对应的类
关联对象:就是与之相关联的类
fetch的三个取值:
1.select,默认
先查主体对象,再根据主体对象多次查询关联对象
2.join
外连接,主体对象外连接到关联对象
3.subselect
子查询,主体对象作为 in 语句中的项(也就是主体对象是子查询)
注意:subselect关联的对象一定是"多"方(一对多)
解释:配置为subselect,in 中写的内容是主体对象
比如:顾客和订单的关系是一对多,也就意味着一个订单只属于一个顾客。业务上一般不会出现根据多个订单查询某个顾客的情况,因为查出的结果不唯一(如刚好这几项订单属于一个顾客,所以得到一个结果。如果分别属于不同的顾客,查出的结果又不同了)。
其查询语句如果是:
select * from customer
where customer.oid in (
select oid from order;
); 显然没什么意义
在使用测试语句时注意的是:设置为join,使用createQuery(String HQL),join效果失效,依然是select。其他的查询语句没有测试,可以自己试试
下一篇: 网站用户行为分析——Linux的安装