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

org.hibernate.HibernateException:没有活动的交易,get无效

昝唯
2023-03-14
问题内容

我是hibernate的新手。

  • 自动创建的hibernate.cfg.xml(Netbeans向导)
  • 自动创建的HibernateUtil.java
  • 自动创建带有注释的POJO类

尝试从数据库获取对象但出现错误:

Exception in thread "pool-1-thread-1" org.hibernate.HibernateException: get is not valid without active transaction
    at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:297)

得到一个对象:

Session session = HibernateUtil.getSessionFactory().getCurrentSession();
CallInfo ci = (CallInfo) session.get(CallInfo.class, ucid);

hibernate.cfg.xml

<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/sochi_feedback</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.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>
<property name="hibernate.current_session_context_class">thread</property>

问题答案:

Transaction tx = session.beginTransaction(); //此语句将启动交易

就在你的 CallInfo ci = (CallInfo) session.get(CallInfo.class, ucid);

然后在交易结束时通过调用提交更改。

tx.commit();


 类似资料:
  • 问题内容: 我正在创建应用程序并在其中使用一些hibernate的东西。我要做的就是将实体保存到数据库中,但我不断收到此异常: 起初,我遇到了这个异常: 然后,我发现需要将其添加到我的hibernate配置中: 这解决了这个问题,但是现在出现了上面的问题。我将实体保存到这样的数据库中: 我的hibernate.cfg.xml文件如下所示: 我在用: Hibernate-4.1.4.Final JD

  • 问题内容: 我试图使声明式交易工作。 这是我的spring.xml文件: 这是我的控制器实现: 两者都在称为test的包中。 这是我的尝试: 但这引发了异常: org.hibernate.HibernateException:如果没有活动事务,createQuery无效 为什么transactionManager不起作用?我希望使用@Transactional批注将所有事务由Spring框架管理。

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

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

  • 我是JPA新手。我正在开发一个使用JPA(Hibernate实现)和Spring的应用程序。我在persistence.xml中声明了一个持久性单元,并在Spring配置文件中声明了有关EntityManagerFactory的配置。类似于这样: 然后我有一些DAO,我在其中注入实体管理器与@PersistenceContext注释: 最后,我有一些注入DAO的服务(通过@Autowired Sp

  • 问题内容: 我在我的App中有不同之处,在所有这些方面,我都不需要。我找不到如何禁用它。我试图找到一个属性将其应用于,但到目前为止我什么都没找到。有人可以帮我吗? 问题答案: 哈哈,我刚才也被困在这一点上,所以很高兴我可以为您提供解决方案,至少对我有用:) 您想要做的是在values / styles.xml中定义一个新样式,如下所示 只有NoActionBar样式对您来说才有意义。最后,您必须在