作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何设置我的 Thread
类以访问父类有权访问的 session ?
目前父类正在使用 SomeObject
,它有多个 Set
的对象。这些对象需要由扩展 Thread
的 DeviceRunner
使用。
此应用程序正在使用 Spring Boot/Spring Data JPA/Hibernate。
更新
是否可以像@Controller
一样@Autowire
repository
?如下所示的 @Autowired
repository
返回 null。
设置@Transactional 允许我处理 SomeObject 的对象,但我无法将 Repository
获取到 Autowire
以便我可以创建/保存?
谢谢
代码 DeviceRunner 扩展线程:
@Transactional(propagation=Propagation.REQUIRED)
public class DeviceRunner extends Thread {
@Autowired
public TestRunRepository repository;
public SomeObject object;
private .....
public DeviceRunner(args.... ) {
// set private variables
}
public void run() {
// do stuff
}
synchronized ....
}
编码一些对象
@Data
@Entity
@Table(name = "test_run")
public class SomeObject {
@ManyToMany(fetch = FetchType.LAZY)
private Set<OtherObjects> otherObjects;
}
测试运行库
@Repository
@Transactional
public interface TestRunRepository extends PagingAndSortingRepository<TestRun, Long> {
}
创建线程的 Rest Controller
@Transactional(propagation=Propagation.REQUIRED)
@RestController
public class HomeController {
@Autowired
public TestRunRepository repository;
....
@Transactional
private void runTestRunOnDevice(TestRun testRun) {
DeviceRunner deviceRunner = new DeviceRunner(testRun);
deviceRunner.start();
while (deviceRunner.isAlive());
}
}
最佳答案
您可以使用带有传播的事务作为必需的,这是默认的。@Transactional(Propagation.REQUIRED)
关于java - Hibernate 无法初始化代理 - 在线程中访问对象时没有 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38606399/
我是一名优秀的程序员,十分优秀!