我正在尝试创建一个通过 JPA 操作数据库的 bean。这些方法都正确地用 @Transactional(readOnly = false) 注释 - 直到现在这是由来自 Servlet 的调用处理的,并且一切正常。
现在我想在它的 init 方法中做一些数据库操作:
@Component
public class MyBean {
@PostConstruct
@Transactional(readOnly = false)
public void init() {
MyEntity myEntity = ...;
...
em.persist(myEntity);
}
(案例被简化)。像这样我收到异常“没有会话或会话已关闭”。显然,事务只有在 Servlet 中的请求运行时才正确启动,而不是从实际的 bean 运行。即使从 bean 本身运行,我如何才能实现这一点?
谢谢。