当前位置: 首页 > 面试题库 >

org.hibernate.HibernateException:没有活动的事务,保存无效

丌官远
2023-03-14
问题内容

我正在创建JSF应用程序并在其中使用一些hibernate的东西。我要做的就是将实体保存到数据库中,但我不断收到此异常:

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

起初,我遇到了这个异常:

org.hibernate.HibernateException: No CurrentSessionContext configured!

然后,我发现需要将其添加到我的hibernate配置中:

<property name="hibernate.current_session_context_class">thread</property>

这解决了这个问题,但是现在出现了上面的问题。我将实体保存到这样的数据库中:

public void create(T entity) {
    getSessionFactory().getCurrentSession().save(entity);
}

我的hibernate.cfg.xml文件如下所示:

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/online_tests_management</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">root</property>
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.hbm2ddl.auto">update</property>
        <property name="hibernate.current_session_context_class">thread</property>

        <mapping class="com.groupgti.onlinetests.management.db.Service"/>
    </session-factory>
</hibernate-configuration>

我在用:

  • Hibernate-4.1.4.Final
  • JDK 1.6
  • Tomcat6
  • JSF 2.0
  • PrimeFaces 3.3.1
  • MySQL

有人知道可能在哪里吗?


问题答案:

你必须打电话 session.beginTransaction()

public void create(T entity) {
   Session session=getSessionFactory().getCurrentSession();
   Transaction trans=session.beginTransaction();
   session.save(entity);
   trans.commit();
}


 类似资料:
  • 问题内容: 我是hibernate的新手。 自动创建的hibernate.cfg.xml(Netbeans向导) 自动创建的HibernateUtil.java 自动创建带有注释的POJO类 尝试从数据库获取对象但出现错误: 得到一个对象: hibernate.cfg.xml 问题答案: 加 //此语句将启动交易 就在你的 然后在交易结束时通过调用提交更改。

  • 问题内容: 我正在尝试使用Spring @Transactional批注,但是在调用方法 findAll 时遇到问题,并且出现以下错误: 人DAO: 这是我的: 我尝试删除此行,但是又出现了一个错误,为什么这行不通? 问题答案: 您必须明确声明对事务管理器注释的支持 添加到您的配置中: tx是xmlns:tx =“ http://www.springframework.org/schema/tx”

  • 我在我的应用程序中使用了Spring冬眠球衣。我想使用事务,因此我在服务图层中使用了 spring @Transactional 注记。这是我的Hibernate.cfg.xml: 我没有在这里使用session_context,所以Spring可以管理它。在我的应用程序Context.xml中,我定义了事务管理器: 所有与 /api/v1/* 匹配的 url 都映射到名为泽西岛的服务器和使用的

  • 我想将我的axis2项目与spring集成在一起。我按照本指南加载了一个spring applicationContext。 https://axis.apache.org/axis2/java/core/docs/spring.html 简而言之 以下是我的axis2版本服务: 问题:当轴调用 getResponse() 方法时,dao 设法获取注入的会话工厂(和Hibernate会话),但是当

  • 问题内容: 我正在通过遵循一个教程来研究示例Spring Hibernate示例,并且陷入了异常说 这是我的代码: Person.java- 简单的POJO person.hbm.xml- 映射文件 PersonDao.java- 我的DAO类 PersonService.java- 服务层 spring-config.xml -Spring配置文件: 最后是我的 主程序-MainApp.java

  • 我有一个具有两个活动的Android应用程序 - 和。 当用户第一次打开应用程序时,它应该将他们带到,然后,他们应该登录并转到具有注销按钮的。 如果他们按下“注销”按钮,它应该再次返回到。如果他们按下后退按钮,它应该退出应用程序。当他们按下应用程序图标时,它应该直接将他们带到。 我对如何保存活动并在按下应用程序图标时返回该特定活动感到困惑。