加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Hibernate懒加载异常解决

发布时间:2021-11-24 19:01:17 所属栏目:教程 来源:互联网
导读:一 懒加载概念 懒加载,运行后没有立刻访问相应的数据库,返回的是代理对象,永远不可能为空,当第一次使用该对象的时候,才去访问 二 异常的出现 1.用查询的方法来测试 public static User getUser(int id){ Session session = null; try { session = Hiber

一  懒加载概念
 
懒加载,运行后没有立刻访问相应的数据库,返回的是代理对象,永远不可能为空,当第一次使用该对象的时候,才去访问
 
二 异常的出现
 
1.用查询的方法来测试
 
public static User getUser(int id){
 
       Session session = null;
 
       try {
 
           session = HibernateUtil.getSession();
 
           Class clazz = User.class;//通过映射文件查找class对象
 
           User user = (User) session.load(clazz, id);                       return user;
 
       } finally {
 
           // 使资源得到释放
 
           if (session != null) {
 
              session.close();
 
           }
 
       }
 
    }
 
2.在主方法中
 
    public static void main(String[] args) {
 
       //增
 
       User user = new User();
 
       user.setName("老王");
 
       user.setBirthday(new Date());
 
       addUser1(user);
 
       System.out.println(user.getId());
 
      
 
       //查
 
       User user2 = getUser(user.getId());
 
       System.out.println(user2.getId()+":"+user2.getName());
 
    }
 
3.异常
 
Exception in thread "main" org.hibernate.LazyInitializationException: could not initialize proxy - no Session
 
    at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:167)
 
    at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:215)
 
    at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190)
 
    at com.hbsi.domain.User_$$_javassist_0.getName(User_$$_javassist_0.java)
 
    at com.hbsi.test.TestHibernate.main(TestHibernate.java:30)
 
 
 
4.解决的办法
 
出现异常的原因当在执行的时候,因为懒加载的原因,它并没有立刻访问数据库,当在main方法中访问的时候,已经插入完成,session已经关闭,所以会抛此异常。
 
 

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读