我的JavaEE应用程序遇到了麻烦。 我正在TomEE上运行Hibernate + Jersey。

这是我的基类:

public abstract class BaseEntityManager<E, K>{
protected Class entityClass;

@PersistenceContext
protected EntityManager em;

public BaseEntityManager() {
    ParameterizedType genericSuperclass = (ParameterizedType) getClass().getGenericSuperclass();
    this.entityClass = (Class) genericSuperclass.getActualTypeArguments()[0];
}

public EntityManager getManager() {
    return em;
}

public void persist(E entity) { em.persist(entity); }

public void remove(E entity) { em.remove(entity); }

public E findById(K primaryKey) { return (E)em.find(entityClass, primaryKey); }


}

这是具体类型的类:

@Stateless
public class SomethingManager extends BaseEntityManager<SomethingEntity, Integer>{}

这是我的资源。 我在JSONCreator中反序列化来自JSON的数据。 有一些引用实体的ID。 然后在“ new”方法中,我尝试持久保存可以正常工作的新对象,但是无法将其他实体之间的关系合并回新对象(前面提到的引用实体的ID)。

@Path("/Something")
public class Something{

// Other entity managers here ....
@EJB
SomethingManager smm;

@EJB
OtherManager ttem;


@Secured
@POST
@Path("/new")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public SomethingEntity add(@Context HttpServletRequest req, SomethingEntity r)
{
   ...


    try {


        for (int i = 0; i < r.getOtherEntities().size(); i++) {
            OtherEntity x = (r.getOtherEntities().get(i));
            x = ttem.findById(x.getId());
            x.getSomethingEntities().add(r);
            ttem.getManager().merge(x);
        }
    }
    catch (Exception e)
    {
        e.printStackTrace(); // TODO Intelligent logging
        return null;
    }

    return r;
    }
}

这将引发异常ttem.getManager()。merge(x);

似乎有什么问题?

谢谢。

#1楼 票数:1 已采纳

调用Rest资源时没有活动事务。 我可以看到2个解决方案:

  1. 如果服务器兼容Java EE 7,则将@Transactional拦截器绑定注释addSomething类的add方法中。
  2. 使用@Stateless批注为Something类添加批注。 然后,您将通过容器管理EJB事务。

  ask by Schnappi translate from so

未解决问题?本站智能推荐:

1回复

javax.persistence.TransactionRequiredException:

我正在尝试使用JPA Controller方法从表中删除记录,但是出现以下异常。 “ javax.persistence.TransactionRequiredException:如果没有将实体管理器加入当前事务,则无法调用需要事务的方法。” 以下是我尝试运行的代码 任何帮助
1回复

启用S​​pring事务,javax.persistence.TransactionRequiredException

我知道交易有很多问题,但是没有一个答案对我有帮助。 因此,我试图在我的Spring MVC应用程序中启用事务,但是我不知道为什么它不起作用。 这是我的配置XML 我尝试在服务类,方法,DAO方法的服务类上使用@Transactional批注,但是每次遇到相同的异常时,我都会:
2回复

不活跃的transaciotn:javax.persistence.TransactionRequiredException:执行更新/删除查询

为什么我的交易不活跃? 我有这样的消息:“javax.persistence.TransactionRequiredException:执行更新/删除查询”我找不到为什么 aplicationContext: DAO Impl } persistence.xml中
1回复

javax.persistence.TransactionRequiredException:没有可用的事务性EntityManager

自昨天以来,我一直在为这个异常而苦苦挣扎……我检查了几乎所有内容,搜索了所有链接,但没有发现任何问题。 我总是收到异常javax.persistence.TransactionRequiredException:当我从类别服务调用addCategory或removeCategory时, 没
2回复

在Java EE 6中,如何以编程方式获取JAX-RS端点的URL?

TomEE 1.7.2,Java EE 6,Java 8 我有这个JAX-RS应用程序: 在启动期间,TomEE打印: 如何在启动期间以编程方式获取该URL? 我想创建一个框架,在网络上本地公布此URL。
1回复

我有一个javax.persistence.TransactionRequiredException

我有例外 根的context.xml 我的DAO 我的服务
1回复

javax.persistence.TransactionRequiredException错误:JPA 2 +休眠-本机查询

我在尝试更新Sphinx实时索引时遇到上述错误。 由于sphinx使用的数据库非常接近mysql,因此我尝试使用实体管理器来更新索引。 但是sphinxql不是完整的mysql数据库,因此,如果我使用entitymanager.merge方法,则sphinxql无法理解生成的sql。 因此
1回复

Spring Boot:javax.persistence.TransactionRequiredException:使用@Transactional Annotation 时执行更新/删除查询

我正在研究 Spring Boot (v1.5.22.RELEASE) 和 Hibernate 5.4.20.Final [pom.xml 附件]。 也尝试过 Spring Boot (v2.2.2) 但我遇到了同样的错误。 在我的项目中,数据库是动态的。 根据请求,更改数据库。 我正在使用 S