您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

需要事务才能执行此操作(使用事务或扩展的持久性上下文)

需要事务才能执行此操作(使用事务或扩展的持久性上下文)

基本上,一种情况是存在带有Bean管理事务(BMT)的容器管理的JTA感知持久性上下文。

因此,除了你的EntityManager你也应该注入,到你DataFetchBean,你UserTransaction,以开始,提交或回滚事务。

@Named
@RequestScoped
public class DataFetchBean {
    @PersistenceContext
    EntityManager em;

    @Resource
    private UserTransaction userTransaction;

    ...
}

然后,在您的addEmployee方法中,您必须开始然后提交事务,以便对员工实体所做的更改可以传播到数据库

public void addEmployee() throws Exception {
    Employee employee = new Employee(500000, new Date(335077446), "Josh", "Carribean", 'm', new Date(335077446));

    userTransaction.begin();
    em.persist(employee);
    userTransaction.commit();
}

尽管如此,您仍应考虑将数据库操作迁移到EJB中,然后将其注入到JSF bean中,因此将管理事务的责任委托给了容器,即使用CMT,而不是手动处理事务。

其他 2022/1/1 18:18:10 有555人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶