java - JTA Requires new 在同一个 Injected 类中不起作用
问题描述
好吧,我有一个由 CDI 注入的类,如下所示:
@Named
@RequestedScoped
public class MyClass{
@Transactional
public void start(){
for(int i = 0; i < 100;i++){
//do some logic
forceSave();//should save immediately
}
}
@Transactional(value = Transactional.TxType.REQUIRES_NEW)
public void forceSave(){
}
}
不高兴它不起作用。forceSave() 在与 start() 方法相同的事务中工作。我需要创建另一个类,将 forceSave() 放在另一个类中,一切正常,如下所示:
@Named
@RequestScoped
public class MyClass{
@Inject
private MyClassTwo two;
@Transactional
public void start(){
for(int i = 0; i < 100;i++){
//do some logic
two.forceSave();//should save immediately
}
}
}
@Named
@RequestScoped
public class MyClassTwo{
@Transactional(value = Transactional.TxType.REQUIRES_NEW)
public void forceSave(){
}
}
第二个解决方案工作正常,但非常难看。我需要始终创建另一个类来使用新事务。还有另一种解决方法吗?
解决方案
推荐阅读
- python - 将大型 JSON 文件转换并拆分为更小的 Parquet 文件
- git - 如何强制 stash pop 覆盖或避免冲突?
- filter - 过滤映射条目中多个键的值并返回包含这些条目的映射 Clojure
- postgresql - 为什么即使对象创建失败,Postgres 序列项也会上升?
- drake - 如何在汽车中创建新的演示?
- python - Tkinter OptionMenu 中的下拉按钮
- c++ - NetBeans 的代码辅助在 Qt 中出现问题
- javascript - 如何使用返回多个项目的 TypeORM 设置 Nestjs 查询?
- node.js - 如何在 Telegram 中捕捉键盘响应
- powershell - PowerShell 以管理员身份运行