gpt4 book ai didi

java - @Controller 类中的@Transactional 方法不被视为事务性的

转载 作者:行者123 更新时间:2023-12-03 23:49:23 26 4
gpt4 key购买 nike

我注意到以下内容在标记为 @Controller 的类中不起作用:

@Autowired
SessionFactory sessionFactory;

@ResponseBody
@Transactional
@RequestMapping(method = RequestMethod.GET , value = "/map")

public ArrayList<PhotoDTO> getPhotos(...someParams) {
Entity result sessionFactory.getCurrentSession()... //do some manipulation

return result;
}

当我调用该 URL 时,我收到一条错误消息,指出该方法不是事务性的(尽管如您所见,它被标记为一个)

如果我将此方法复制到另一个名为 MyService 的类并改为从 Controller 调用它,它会完美运行

这是某种 Spring 建议(让我或多或少使用更多类的阴谋)吗?

最佳答案

不要在您的 Controller 中执行事务。将它们放在您的服务层类中。

将您的代码分离到模型- View - Controller 中。

是的,这是一个阴谋。它使您能够在 Controller / View 之间共享代码而无需重复代码。并且还停止不必要的事务回滚(对于与实际事务无关的异常)。

一开始似乎需要更多代码,但从长远来看,它更易于管理且开发起来更简单。

关于java - @Controller 类中的@Transactional 方法不被视为事务性的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9616410/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com