java - 使用 Spring websocket 时无事务

标签 java spring spring-transactions spring-websocket

我像往常一样使用@MessageMapping注释配置了一个websocket。它工作得很好,但是当我调用一些用 @Transactional 包围的方法并且我尝试在数据库上执行一些更新时,我收到错误:

javax.persistence.TransactionRequiredException: Executing an update/delete query.

在这种情况下,事务管理器似乎不起作用。但是,当从 Rest Controller 调用相同的方法时,一切都会顺利进行。有人知道发生了什么事吗?

谢谢

最佳答案

我替换了 XML 配置:

<bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>

使用 JAVA 配置:

@Configuration
@EnableTransactionManagement
public class AppConfig {
   @Autowired
   private EntityManagerFactory entityManagerFactory;

   @Bean
   public PlatformTransactionManager transactionManager() {
       return new JpaTransactionManager(entityManagerFactory);
   }
}

并且它有效。

关于java - 使用 Spring websocket 时无事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31697548/

相关文章:

Java - 无法正确读取先前创建的编码文件

java - 为什么@transactional注解不建议与select操作一起使用

java - 如何在所有微服务中维护相同的 Spring Boot 版本?

java - Spring @Transactional 超时未按预期工作

java - 如果数据库 ID 不再存在,如何忽略删除时的异常?

java - 多线程似乎不起作用

java - 像 "@PathParam(" ") "这样的java注解在java中是如何处理的?我们在哪里可以找到该特定注释处理器的源代码?

Java如何仅从节点读取文本而不是从其子节点读取文本

spring - 从类路径加载文件

java - Spring MVC 图像不显示