在使用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如何写,
特别强调的是返回的主表信息数据结构必须和第一个方法一样,不更改变返回类型,比如不能返回为数组,要求唯一不同的是在是否和或何时查询明细表的信息
如何做到不用在映射文件里配置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如何写,
特别强调的是返回的主表信息数据结构必须和第一个方法一样,不更改变返回类型,比如不能返回为数组,要求唯一不同的是在是否和或何时查询明细表的信息
解决方案 »
- 求大神指导java精通之门
- Singletone的实例对性能有无影响?它和synchronized 有无关系?
- java 字符集的问题
- 如何获取这个比较特殊的网页内容
- 求thinking in java 第四版练习答案 (俺没有资源分下不了)
- 请问在在嵌入了applet的html中,怎么响应applet事件,就像html响应ocx控件的事件
- 帮忙给看看这个异常是怎么回事?
- for(;z<10;++z){} 这个是什么意思,z的初始值是????
- 请教,applet中可以显示出jdbTable,可却死活不显示jdbnavToolBar控件?
- 简单问题:有没有鼠标离开JTextField的事件?
- 用ant编译idl生成的代码时出现 illegal character: \64的问题
- 我想弄出一个线程死锁来,但总是弄不出来,请教这是什么原因
不过 无论如何 延迟加载都是设置成true的 既然想用程序判断是否延迟加载的话