主表(部门表):Tdept(deptid, deptname)
子表(员工表): Temployee (empid, deptid,empname)员工类 (VO):
class Temployee
private String empid;
private Tdept Tdept;
private String empname; public String getEmpid() {
return this.empid;
} public void setEmpid(String empid) {
this.empid = empid;
} public Tdept getTdept() {
return this.Tdept;
} public void setTdept(Tdept Tdept) {
this.Tdept = Tdept;
} public String getEmpname() {
return this.empname;
} public void setEmpname(String empname) {
this.empname = empname;
}Temployee temp = TemployeeDao.findById("100");
Tdept tdept = temp.getTdept();
tdept.getDeptname(); //执行到这一句出现错误错误信息如下:
org.hibernate.LazyInitializationException: could not initialize proxy - no Session 。不知道是什么原因,难道
Tdept tdept = temp.getTdept();
一句没有获取到Tdept对象实例吗,我其实就是想通过子表去获取主表对象(Tdept), (Tdept的VO和DAO都已经定义好).
不知道通过Temployee员工对象怎么得到它的主表对象其主表中的属性值?
子表(员工表): Temployee (empid, deptid,empname)员工类 (VO):
class Temployee
private String empid;
private Tdept Tdept;
private String empname; public String getEmpid() {
return this.empid;
} public void setEmpid(String empid) {
this.empid = empid;
} public Tdept getTdept() {
return this.Tdept;
} public void setTdept(Tdept Tdept) {
this.Tdept = Tdept;
} public String getEmpname() {
return this.empname;
} public void setEmpname(String empname) {
this.empname = empname;
}Temployee temp = TemployeeDao.findById("100");
Tdept tdept = temp.getTdept();
tdept.getDeptname(); //执行到这一句出现错误错误信息如下:
org.hibernate.LazyInitializationException: could not initialize proxy - no Session 。不知道是什么原因,难道
Tdept tdept = temp.getTdept();
一句没有获取到Tdept对象实例吗,我其实就是想通过子表去获取主表对象(Tdept), (Tdept的VO和DAO都已经定义好).
不知道通过Temployee员工对象怎么得到它的主表对象其主表中的属性值?
解决方案 »
- 关于JAVA调用其他进程的问题
- struts 项目 3级联动的实现
- 使用hibernate 的saveOrUpdate方法,更新不了数据
- Url内方法大小写问题
- json servlet交互问题
- tomcat不支持x64 的java?
- no session or session was closed谁可以帮忙解决(急)
- Eclipse+Tomcat4.1,启动时出现问题!
- JSP及Struts开发工具:JSPStudio下载:ftp://210.36.70.51
- Struts中的Action与Servlet中的Action到底有什么区别?
- 这个servlet
- 急:调用javamail,接收者是个人的话,邮件能收得到,如果接收者是群组邮件(列表名称),邮件收不到,请问是什么原造成的啊
在这里,你查询Temployee 对象时将Tdept的主键放在了缓存当中,你如果设置了lazy="false",
当你用到得时候它就会在去查数据库,从而拿到你需要的值!
检查一下你的映射文件,
在Tdept的java类中,应该有个set容器,存放的是Temployee 对象
Tdept tdept=DeptDao.findById(deptid);
tdept.getDeptname();
倒是可以取到,好象默认情况下,子对象只取到主表外键值,其它属性值就取不到了.另外试了下smilewmr 同学的方法,非常好用,不用象上面这么麻烦了,在此十分地感谢smilewmr同学帮助.