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已经关闭,所以会抛此异常。 (编辑:东莞站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |