关于hibernate 1+n问题的一些总结
2015-08-14 15:56
218 查看
为什么会产生1+N问题,这样的文章网上有很多,需要了解的童鞋可以自行百度一下,出于人道主义,我还是贴个链接吧。。。
hibernate为什么会出现1+N问题
引用一下链接哈,感谢博主的分享
接下来是一些总结:
关于1+n问题,处理的思路如下:
一、没有使用HQL语句的情况下:<比如使用get()方法>
1、如果不一定需要使用到关联对象,可以设置 lazy=true,如果设置了fetch=join,则lazy=true会失效,每次查询都会取出关联对象
2、如果一定要用到:设置 fetch=join,或者使用createCriteria()代替createQuery(),都可以解决问题
<createCriteria()默认使用inner join (内连接)的方式进行查询>
二、使用HQL的情况下,出现1+N问题:
可以在HQL中使用 join fetch,在实际开发中,因为join fetch默认使用的是inner join,所以如果关联对象可以为空的话,要视情况使用left
join fetch 或者 rigth join fetch,不然有些记录会查不出来,有时候还要加 distinct 排重
以上都是个人见解,如果有不对的地方,恳请大家帮忙指出,感激不尽
hibernate为什么会出现1+N问题
引用一下链接哈,感谢博主的分享
接下来是一些总结:
关于1+n问题,处理的思路如下:
一、没有使用HQL语句的情况下:<比如使用get()方法>
1、如果不一定需要使用到关联对象,可以设置 lazy=true,如果设置了fetch=join,则lazy=true会失效,每次查询都会取出关联对象
2、如果一定要用到:设置 fetch=join,或者使用createCriteria()代替createQuery(),都可以解决问题
<createCriteria()默认使用inner join (内连接)的方式进行查询>
二、使用HQL的情况下,出现1+N问题:
可以在HQL中使用 join fetch,在实际开发中,因为join fetch默认使用的是inner join,所以如果关联对象可以为空的话,要视情况使用left
join fetch 或者 rigth join fetch,不然有些记录会查不出来,有时候还要加 distinct 排重
以上都是个人见解,如果有不对的地方,恳请大家帮忙指出,感激不尽
相关文章推荐
- LeakCanary 中文使用说明
- hdu 5383 Yu-Gi-Oh!(最大费用费用流)
- switch语句配合for死循环做出让用户选择的导航菜单,该菜单永不停止,直到用户激活某一case为止
- 9.9递归和动态规划(十一)——算出有几种括号的放法可使该表达式得出result值
- C++/STL_中Vector的基本操作与示例
- Josephus环
- HDOJ Choose the best route 2680【最短路Dijkstra+反向建图】
- 编码规范(二)之Code Templates的设置(转)
- ASP.net MVC3里的HandleErrorAttribute
- 使用IEnumerator和IEnumeratable实现自定义类型的foreach访问
- C++多态的实现原理
- 播放器(一)-FFMPEG-SDL-MFC-本地文件
- 关于Apache的日志
- 编译器错误error: expected unqualified-id before 'using'| ||=== Build finished: 1
- 树结构练习——排序二叉树的中序遍历
- Javascript-BinarySearchTree
- iOS短信验证SMSSDK的使用
- Visual studio 2013 批量删除空行的方式
- java简述HASH
- HDU 2563 统计问题 (DFS + 打表)