hibernate如何取消延迟加载效果

gch_h 2010-03-16 10:48:02
在使用hibernate的时候遇到一个延迟加载的问题小弟一直没弄懂:
如何做到不用在映射文件里配置lazy=false通过hql语句查询控制是否使用延迟加载
这个说起来有点麻烦看一个例子吧
一个主表实体TestTable对应多个明细表实体TestDetailTable,通过字段mainId关联

//主表
import TestTable;
//明细表
import TestDetailTable;
testDao{
//这个方法使用默认的延迟加载,明细表在读取的时候再查询。
List<TestTable> list(){
String hql = 'from TestTable';
}

//这个方法不使用延迟加载,直接将主表和明细表的信息一次性全查出来
//要求返回的主表信息和第一个方法一样的list
List<TestTable> listWithDetail(){
//TODO 这里hql如何写???
String hql = '';
}

//这个方法不使用延迟加载,只查找主表信息不查明细表信息,避免session失效的异常
//要求返回的主表信息和第一个方法一样的list
List<TestTable> listNoDetail(){
//TODO 这里hql如何写???
String hql = '';
}
}


请教:第二个和第三个方法的hql如何写,
特别强调的是返回的主表信息数据结构必须和第一个方法一样,不更改变返回类型,比如不能返回为数组,要求唯一不同的是在是否和或何时查询明细表的信息
...全文
522 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuhuaming 2010-03-18
  • 打赏
  • 举报
回复
String hql = "select distinct b from Business b join fetch b.fees join fetch b.account where 1=1 ";不知道LZ是不是想实现这样的事情,把关联的纪录查询出来,
zhuhuaming 2010-03-18
  • 打赏
  • 举报
回复
自己在hql语句中写join fetch(好像是这么写的)
shengfengluanshi 2010-03-18
  • 打赏
  • 举报
回复
使用表连接查询,fetch="true"不过在有多个表的时候最好不要用,会有错误结果出现
gch_h 2010-03-18
  • 打赏
  • 举报
回复
真的没有什么更好的办法了!
BearKin 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 gch_h 的回复:]
在使用hibernate的时候遇到一个延迟加载的问题小弟一直没弄懂:
如何做到不用在映射文件里配置lazy=false通过hql语句查询控制是否使用延迟加载
这个说起来有点麻烦看一个例子吧
一个主表实体TestTable对应多个明细表实体TestDetailTable,通过字段mainId关联

Java code

//主表
import TestTable;
//明细表
i……
[/Quote]
像老紫竹说的 在查询完毕后马上调用延迟加载的对象 于是加载了 或者通过join语句来完成他
不过 无论如何 延迟加载都是设置成true的 既然想用程序判断是否延迟加载的话
BearKin 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 java2000_net 的回复:]
如果默认的行为是延迟加载,那么我个人建议:
1 读取数据,此时是延迟加载
2 马上读取和使用那些延迟加载的数据,让他们加载
3 返回

呵呵,也就是说,通知那些延迟的,我现在就要用,你马上给我过来。
[/Quote]

有些事情俺不太明白哦 一对多的延迟不延迟肯定是查询两次
不过多对一或者一对一的话 是不是一次就能将数据查询出来哦?不用延迟加载是不是就是一次查询出来呢?
Arthur0088 2010-03-17
  • 打赏
  • 举报
回复
在进行一对多或者一对一、多对一的时候配置@OneToOne(fetch=FetchType.LAZY)表示延迟加载
老紫竹 2010-03-17
  • 打赏
  • 举报
回复
如果默认的行为是延迟加载,那么我个人建议:
1 读取数据,此时是延迟加载
2 马上读取和使用那些延迟加载的数据,让他们加载
3 返回

呵呵,也就是说,通知那些延迟的,我现在就要用,你马上给我过来。
gch_h 2010-03-16
  • 打赏
  • 举报
回复
自己顶一下
gch_h 2010-03-16
  • 打赏
  • 举报
回复
怎么无人回答

62,619

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧