最近又用到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;
}
没想到,仅仅这样一改竟然就没错误了!百思不得其解……
分享到:
相关推荐
同时,作者也邀请用户在遇到问题时到其个人空间留言咨询,显示出开发者愿意分享和解答疑惑的态度,有助于初学者解决在使用过程中可能遇到的问题。 【标签】"3 Hibernate 源代码" 提示我们,这个项目使用了Hibernate...
Spring、Struts和Hibernate是Java开发中非常经典的三大框架,它们各自在应用程序的不同层次上发挥作用,共同构建了一个完整的MVC(Model-View-Controller)架构。这篇文章将详细讲解这三个框架的核心概念、整合方式...
《Hibernate中文开发手册详解》提供了全面的Hibernate学习资源,无论你是初学者还是有经验的开发者,都能从中找到解答疑惑的答案。通过深入理解并熟练运用Hibernate,你将在Java开发中更加游刃有余,实现高效的数据...
本示例探讨了如何实现Android客户端与基于Struts、Hibernate和Spring的后台服务器之间的数据交互,使用JSON作为数据传输格式。对于初学者来说,这是一个很好的起点,因为它涵盖了多个关键的技术栈。 首先,让我们...
同时,提供清晰的加载状态提示,避免用户疑惑。 通过以上步骤,我们可以成功地在Struts2和Hibernate环境下实现页面列表的假分页功能。这种技术在社交网络、电商网站等需要展示大量数据的场景中广泛应用,极大地提升...
例如,你可能会遇到Spring Bean的生命周期问题,Struts2的Action配置疑惑,Hibernate的查询优化挑战,或是JSP中的EL表达式问题。每个问题的解答通常会涉及详细的步骤、代码示例和最佳实践。 通过这个资源库,开发者...
- 常见问题解答(FAQ):解答了用户在使用过程中可能遇到的问题和疑惑。 5. **主要应用场景** - **EJB开发**: XDoclet可以自动创建EJB组件的相关部署描述符,如ejb-jar.xml、ejb-client.jar等。 - **JDBC和...
这个基于SSH的网上答疑系统旨在提供一个在线平台,帮助用户解答疑惑,支持后台管理和前台交互功能。 **1. Struts2框架** Struts2作为MVC(Model-View-Controller)架构的一部分,负责处理HTTP请求并决定如何响应。...
4. **师生交流**:系统内置交流模块,允许师生之间的在线讨论,解答实验过程中的疑惑,提高教学质量。 在实现这些功能时,开发人员需要考虑权限控制、数据安全、性能优化等问题。例如,通过Spring Security进行权限...
9. **社区与支持**:了解AppFuse的社区资源,如论坛、邮件列表、GitHub仓库等,这些地方可以获取最新的更新信息、解答疑惑,甚至参与项目贡献。 总之,"appfuse_quick_start"是一个引导你快速上手AppFuse的资源,...
7. **JPA(Java Persistence API)**和**Hibernate**:JPA是Java EE中的ORM(对象关系映射)标准,而Hibernate是一个流行的JPA实现,用于简化数据库操作。 8. **JSF(JavaServer Faces)**:提供了一种组件化的用户...
- **在线咨询**:支持用户之间的即时沟通,解答创业疑惑。 6. **数据库设计** 数据库需包含用户表、项目表、投资表、消息表等多个实体,合理设计关系模型,确保数据的一致性和完整性。 7. **界面设计** 界面应...
"SSH_JOBA"这个名字暗示了项目可能涉及SSH(Struts + Spring + Hibernate)框架的使用。SSH是Java Web开发中常用的三大框架,它们分别处理MVC模式的视图、控制和持久层。通过学习和实践SSH框架,初学者可以学习到...
票务管理系统采用Struts+Hibernate+Spring的Web应用框架,与Websphere和Lotus Domino实现了高度集成,以满足系统的安全、稳定、实时高效和可靠性的需求。 沟通管理是项目管理的四大知识领域之一,包括规划沟通、...
开发者可能使用JDBC或者ORM框架(如Hibernate或MyBatis)来与数据库进行交互,以实现数据的增删改查操作。 在测试方面,提到系统已经在本地经过测试,这意味着开发者可能采用了单元测试、集成测试等方法来确保各...
12. 谈谈你此刻做技术最大的疑惑是什么? 架构师需要不断学习和总结技术经验,了解技术的前沿和趋势。 13. 描绘一个你感觉最成功的一次架构事例? 架构师需要具备良好的架构设计能力和实践经验,能够成功地设计和...
标题《Java解惑中文》很可能是某本专注于解决Java编程中常见疑惑、误区或陷阱的书籍的中文版。这类书籍通常由经验丰富的Java开发者编写,目的是帮助其他开发者深入理解Java语言和相关类库的内在工作原理,同时学习...
Hibernate)和 SSM 框架(Spring + SpringMVC + MyBatis)是最常见的两个集成框架。它们很好地利用了 Spring IoC 特性,极大程度地减少了代码量和降低了代码之间的耦合度。之前看了一些 Spring Core 和 SpringMVC 的...
在Java Web开发中,通常会采用MVC(Model-View-Controller)架构模式,项目可能使用了Spring Boot或Struts等框架来构建后端逻辑,JSP或Thymeleaf等技术处理前端展示,而数据库操作则可能借助MyBatis或Hibernate等ORM...