当前位置: 首页 > 知识库问答 >
问题:

TX:注释驱动不工作

易和怡
2023-03-14

你好,朋友,我正在开发基于spring(4.0.3)和hibernate(4.3.6)的应用程序。在会话工厂中保存任何对象时,我遇到以下错误:

org.hibernate.HibernateException: save is not valid without active transaction
20:38:59,881 ERROR [STDERR]     at org.hibernate.context.internal.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:348)

下面是我在application-context.xml中使用的条目

<bean id="transactionManager"
        class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactoryAthena" />
</bean>
<tx:annotation-driven  transaction-manager="transactionManager"/>

还有一件事我想带到这里,如果我在事务管理器属性中使用了任何值,而不是实际的transactionManager作为bean引用,那么这不是抛出错误。所以我认为它没有参考价值<请帮帮我!!

共有2个答案

欧阳晗日
2023-03-14

在你的班级中使用@EnableTransactionManagement

@Component
@EnableTransactionManagement
public class Abc{

}
宰子琪
2023-03-14

您应该看看这个链接,但下面是一个使用xml的示例。

<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactoryAthena" />
</bean>
<tx:annotation-driven  transaction-manager="txManager"/>

    <!-- the transactional advice (what happens; see the <aop:advisor/> bean below) -->
<tx:advice id="txAdvice" transaction-manager="txManager">
    <!-- the transactional semantics... -->
    <tx:attributes>
        <!-- all methods starting with get are read-only -->
        <tx:method name="get*" read-only="true"/>
        <!-- other methods use the default transaction settings (see below) -->
        <tx:method name=""/>
    </tx:attributes>
</tx:advice>

但现在我看到spring社区使用带有注释的声明性事务。比如下面的例子:

@Transactional(readOnly = true)
public class DefaultFooService implements FooService {

    public Foo getFoo(String fooName) {
        // do something
    }

    // these settings have precedence for this method
    @Transactional(readOnly = false, propagation = Propagation.REQUIRED)
    public void updateFoo(Foo foo) {
        // do something
    }
}
 类似资料:
  • 我在我的“tx:注解驱动”行上得到了上面的错误,但是我已经在bean文件的顶部声明了命名空间,为什么以下XML会导致这个错误?

  • 当我评论tx:annotation-drive时,一切都很好,但是带有@transactional注释的method不起作用。我做错了什么? 我的年级依赖关系:

  • 我正在尝试在数据库中保存对象。正在执行代码并创建实体的Id,但实体未持久化到数据库(未插入行): 从三行(beginTransation,flush,commit)中删除注释解决了问题,但是为什么注释在这里不起作用呢? spring XML: POM xml文件:

  • 我在玩和 这是我的应用程序上下文文件 以下是我的Java类 HelloWorld1。JAVA 住址JAVA 这里是我尝试运行东西的地方-应用程序。JAVA 我一直在得到这个异常-理想情况下我不应该,因为我已经定义了id为'address1'的@Qualifier注释-所以它不应该抛出异常 警告:上下文初始化过程中遇到的异常-取消刷新尝试:org.springframework.beans.fact

  • 我正在开发数据库,我在EclipseLuna IDE中做了一个项目。我的数据库是mysql。我下载了connector/j文件,并将这个jar文件添加到我的项目中。这是jar文件全名“mysql-connector-java-5.1.35-bin.jar”。但是,当我运行该项目时,它会显示以下错误消息:“没有找到适合jdbc的驱动程序:mysql//localhost/books”。books是我