`
smartzxy
  • 浏览: 199845 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Hibernate疑惑

阅读更多

 

最近又用到Hibernate了,在执行查询时碰到个“Session is closed!”麻烦,如下:

 

org.hibernate.SessionException: Session is closed!

at org.hibernate.impl.AbstractSessionImpl.errorIfClosed(AbstractSessionImpl.java:72)

at org.hibernate.impl.SessionImpl.getPersistenceContext(SessionImpl.java:1850)

at org.hibernate.type.ManyToOneType.scheduleBatchLoadIfNeeded(ManyToOneType.java:142)

at org.hibernate.type.ManyToOneType.hydrate(ManyToOneType.java:128)

at org.hibernate.type.EntityType.nullSafeGet(EntityType.java:227)

at org.hibernate.impl.IteratorImpl.next(IteratorImpl.java:135)

at database.ValidationDAO.find(ValidationDAO.java:35)

at test.testHibe.main(testHibe.java:16)

 

 

开始在我的抽象Dao里是这么写的:

 

protected Iterator find(Class clazz,String user){
		Iterator it = null;
		try {
			startOperation();
			Query q=session.createQuery("from "+clazz.getName()+" v where v.user = :user");
			q.setParameter("user", user);
			it=q.iterate();
			tx.commit();
		} catch (HibernateException e) {
			handleException(e);
		} finally {
			HibernateFactory.close(session);
		}
		return it;
	}

 

实例Dao中则是:

public Validation find(String user) {
		try {
			Iterator it = this.find(Validation.class, user,null);
			if(it.hasNext())
			return (Validation) it.next();

		} catch (Exception e) {
		e.printStackTrace();
		}
		return null;
	}

 

在我搜了半天网上资料后,依旧不得解。突然想到改用List而不是Iterator,于是稍微改了下两段代码:

protected List find(Class clazz,String user){
		List list = null;
		try {
			startOperation();
			Query q=session.createQuery("from "+clazz.getName()+" v where v.user = :user");
			q.setParameter("user", user);
			list=q.list();
			tx.commit();
		} catch (HibernateException e) {
			handleException(e);
		} finally {
			HibernateFactory.close(session);
		}
		return list;
	}

 

public Validation find(String user) {
		try {
			List list=find(Validation.class,user);
			Iterator it=list.iterator();
			if(it.hasNext()){				
				return (Validation)it.next();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

 

没想到,仅仅这样一改竟然就没错误了!百思不得其解……

 

分享到:
评论

相关推荐

    Hibernate做的留言板

    同时,作者也邀请用户在遇到问题时到其个人空间留言咨询,显示出开发者愿意分享和解答疑惑的态度,有助于初学者解决在使用过程中可能遇到的问题。 【标签】"3 Hibernate 源代码" 提示我们,这个项目使用了Hibernate...

    关于spring、struts、hibernate三大框架整合的疑惑!

    Spring、Struts和Hibernate是Java开发中非常经典的三大框架,它们各自在应用程序的不同层次上发挥作用,共同构建了一个完整的MVC(Model-View-Controller)架构。这篇文章将详细讲解这三个框架的核心概念、整合方式...

    hibernate中文开发手册详解

    《Hibernate中文开发手册详解》提供了全面的Hibernate学习资源,无论你是初学者还是有经验的开发者,都能从中找到解答疑惑的答案。通过深入理解并熟练运用Hibernate,你将在Java开发中更加游刃有余,实现高效的数据...

    android客户端与后台服务器交互

    本示例探讨了如何实现Android客户端与基于Struts、Hibernate和Spring的后台服务器之间的数据交互,使用JSON作为数据传输格式。对于初学者来说,这是一个很好的起点,因为它涵盖了多个关键的技术栈。 首先,让我们...

    页面列表实现假分页

    同时,提供清晰的加载状态提示,避免用户疑惑。 通过以上步骤,我们可以成功地在Struts2和Hibernate环境下实现页面列表的假分页功能。这种技术在社交网络、电商网站等需要展示大量数据的场景中广泛应用,极大地提升...

    Java开发技术问题汇集

    例如,你可能会遇到Spring Bean的生命周期问题,Struts2的Action配置疑惑,Hibernate的查询优化挑战,或是JSP中的EL表达式问题。每个问题的解答通常会涉及详细的步骤、代码示例和最佳实践。 通过这个资源库,开发者...

    xdoclet-plugins-1.0.3doc文档

    - 常见问题解答(FAQ):解答了用户在使用过程中可能遇到的问题和疑惑。 5. **主要应用场景** - **EJB开发**: XDoclet可以自动创建EJB组件的相关部署描述符,如ejb-jar.xml、ejb-client.jar等。 - **JDBC和...

    基于ssh网上答疑系统 java

    这个基于SSH的网上答疑系统旨在提供一个在线平台,帮助用户解答疑惑,支持后台管理和前台交互功能。 **1. Struts2框架** Struts2作为MVC(Model-View-Controller)架构的一部分,负责处理HTTP请求并决定如何响应。...

    实验室管理系统

    4. **师生交流**:系统内置交流模块,允许师生之间的在线讨论,解答实验过程中的疑惑,提高教学质量。 在实现这些功能时,开发人员需要考虑权限控制、数据安全、性能优化等问题。例如,通过Spring Security进行权限...

    appfuse_quick_start

    9. **社区与支持**:了解AppFuse的社区资源,如论坛、邮件列表、GitHub仓库等,这些地方可以获取最新的更新信息、解答疑惑,甚至参与项目贡献。 总之,"appfuse_quick_start"是一个引导你快速上手AppFuse的资源,...

    java j2ee学习中必要的chm格式的帮助文档,中文版的

    7. **JPA(Java Persistence API)**和**Hibernate**:JPA是Java EE中的ORM(对象关系映射)标准,而Hibernate是一个流行的JPA实现,用于简化数据库操作。 8. **JSF(JavaServer Faces)**:提供了一种组件化的用户...

    jsp网站,大学生创业平台

    - **在线咨询**:支持用户之间的即时沟通,解答创业疑惑。 6. **数据库设计** 数据库需包含用户表、项目表、投资表、消息表等多个实体,合理设计关系模型,确保数据的一致性和完整性。 7. **界面设计** 界面应...

    北大青鸟三单元项目

    "SSH_JOBA"这个名字暗示了项目可能涉及SSH(Struts + Spring + Hibernate)框架的使用。SSH是Java Web开发中常用的三大框架,它们分别处理MVC模式的视图、控制和持久层。通过学习和实践SSH框架,初学者可以学习到...

    高级项目管理师/软考项目管理师论文

    票务管理系统采用Struts+Hibernate+Spring的Web应用框架,与Websphere和Lotus Domino实现了高度集成,以满足系统的安全、稳定、实时高效和可靠性的需求。 沟通管理是项目管理的四大知识领域之一,包括规划沟通、...

    在线答疑系统

    开发者可能使用JDBC或者ORM框架(如Hibernate或MyBatis)来与数据库进行交互,以实现数据的增删改查操作。 在测试方面,提到系统已经在本地经过测试,这意味着开发者可能采用了单元测试、集成测试等方法来确保各...

    (完整版)Java系统架构师面试题 (2).docx

    12. 谈谈你此刻做技术最大的疑惑是什么? 架构师需要不断学习和总结技术经验,了解技术的前沿和趋势。 13. 描绘一个你感觉最成功的一次架构事例? 架构师需要具备良好的架构设计能力和实践经验,能够成功地设计和...

    Java解惑中文

    标题《Java解惑中文》很可能是某本专注于解决Java编程中常见疑惑、误区或陷阱的书籍的中文版。这类书籍通常由经验丰富的Java开发者编写,目的是帮助其他开发者深入理解Java语言和相关类库的内在工作原理,同时学习...

    高级java笔试题-ssmTest:基于Spring+SpringMVC+Mybatis实现的图书借阅系统,实现了简单的用户权限管理

    Hibernate)和 SSM 框架(Spring + SpringMVC + MyBatis)是最常见的两个集成框架。它们很好地利用了 Spring IoC 特性,极大程度地减少了代码量和降低了代码之间的耦合度。之前看了一些 Spring Core 和 SpringMVC 的...

    基于java的教务查询系统毕业设计(源代码+数据库+部署文档+部署视频).zip

    在Java Web开发中,通常会采用MVC(Model-View-Controller)架构模式,项目可能使用了Spring Boot或Struts等框架来构建后端逻辑,JSP或Thymeleaf等技术处理前端展示,而数据库操作则可能借助MyBatis或Hibernate等ORM...

Global site tag (gtag.js) - Google Analytics