java - getCurrentSession() 与 openSession()

标签 java hibernate genericdao hibernate-generic-dao

我正在尝试使用 generic-dao ( http://code.google.com/p/hibernate-generic-dao/ )。但是,在我的 HibernateBaseDAO 中,getSession() 方法是作为 sessionFactory.getCurrentSession() 实现的。这会导致任何实体更新出错

org.hibernate.HibernateException: createCriteria is not valid without active transaction

但是,当我使用 openSession() 代替 getCurrentSession() 时,它起作用了。我没有将 spring 用作 pom.xml 中的依赖项。我一直在阅读 openSession() 和 getCurrentSession(),但仍然不明白为什么会这样?

最佳答案

找到解决方案,使用 genericDAO 获取需要使用 openSession() 显式打开的当前 session ,而 getCurrentSession() 只是将其附加到 current session .据作者介绍

GenericDAO makes the assumption that you will be handling transactions externally to the DAO

关于java - getCurrentSession() 与 openSession(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16691950/

相关文章:

java - 域对象的更改通知(Hibernate/Java)

java - Hibernate Master Detail 级联插入

java - 来自子对象字段聚合的自定义 Hibernate POJO 字段

java - 如何在 JAX-RS 资源中注入(inject) ConnectionFactory?

java - 使用 JInternalFrame 在客户端/服务器应用程序中创建聊天窗口

java - 在REDIS缓存中保存/检索列表或记录

java - MVC 中所有 Controller 的通用业务服务层

java - 如何使用 Java Swing 定时器在每次触发时做不同的事情?

java-ee-6 - 使用 CDI/Weld 注入(inject)通用 Bean

java - Generic Dao 的设计模式,Spring 中的服务层,不使用 Hibernate