上面那个session.close()没有的(不过我觉得有没有都没关系吧),不好意思,笔误,
盼望达人解释一下:)
盼望达人解释一下:)
解决方案 »
- 求助javamail smtp邮件发送异常
- struts2项目加入后在tomcat时启动报错
- 跳转过去没有反应?
- 过滤器添加后,启动服务时总是报找不到过滤器类的错误,我的过滤器配置是自动生成的路径不会错啊。。。
- jsp中#、%是什么
- 读取外部电力设备的方法
- 各位帮忙看一下下面的问题出在那里了。
- 问个用HttpClient,获取页面数据的问题
- http如何传输图片
- Tomcat连接MS SQL ESERVER 2000出错,代码和错误如下,请教高手??????
- 能不能在j2se1.5的基础上升级为java EE5? --在线等
- 请教一下在hibernate3中调用带有参数的存储过程应该是如何写的?
http://www.hibernate.org/42.html你需要先了解hibernate的session和transaction模型
当执行session.load(Tpark.class,parkId)时,hibernate会从缓存中查找是否有该id对应的代理类对象或实体类对象,如果找到则返回该对象,而不管实体对象是否已经加载,所以象你这种情况已经有代理类对象存在则直接返回该代理类对象,而不查数据库,不会返回null。
session.get(Tpark.class,parkId)则不同,如果缓存中该parkId没有对应的代理或实体类对象,则查询数据库,查不到返回null,如果缓存中已经存在该代理类对象,并且实体对象已加载,则还是返回该代理类对象,而非实体类对象,许多人所说的“get方法永远直接返回实体类对象”也有例外的时候,至少目前的hibernate版本是这样。如果该代理类对象的实体对象还没有加载,则hibernate会执行数据库查询,如果该id对应的记录不存在会报错。
你的程序中执行session.load才会出现这种情况。如果你的数据库建立了这两个表的外键链接关系,就不会存在这种情况了。