致电JPA';s remove();JTA EntityManager不能使用getTransaction();
我创建了一个致电JPA';s remove();JTA EntityManager不能使用getTransaction();,jpa,persistence,Jpa,Persistence,我创建了一个角色实体,我想对它执行CRUD操作。除了“D”(删除)操作外,所有操作都很正常 我使用类似的东西 如上面引用的网页所述 抛出一个IllegalArgumentException 如果参数不是 实体类的实例,或者 是一个独立的实体 我该怎么做?我做错了什么 我的角色实体与用户实体相关(一个角色可以“有”多个用户,一个用户只能有一个角色)。但是,我要删除的角色实例决不会链接到任何活动用户实例。您遇到了什么错误 如果您使用的是JTA,则不能使用EntityManager事务,必须使用JTA
角色
实体,我想对它执行CRUD操作。除了“D”(删除)操作外,所有操作都很正常
我使用类似的东西
如上面引用的网页所述
抛出一个IllegalArgumentException
如果参数不是
实体类的实例,或者
是一个独立的实体
我该怎么做?我做错了什么
我的
角色
实体与用户
实体相关(一个角色可以“有”多个用户,一个用户只能有一个角色)。但是,我要删除的角色
实例决不会链接到任何活动用户实例。您遇到了什么错误
如果您使用的是JTA,则不能使用EntityManager事务,必须使用JTA事务(EJB,或从conext查找用户事务)。不要将JPA配置为使用JTA,或者使用JTA而不是EM事务。谢谢您的回答,但这对我没有多大帮助。虽然我确实认为这与JTA有关。 然而,我发现了一个解决方案,因此我想在这里与大家分享: 而不是:
public void removeRole(Role aRole) {
entityManager.remove(aRole);
}
我所要做的就是:
public void removeRole(Role aRole) {
entityManager.remove(entityManager.merge(aRole));
}
这就是诀窍。算了吧