我创建了一个Role
实体,我想对它进行CRUD操作。一切都运作良好,除了“D”(删除)操作。
我使用与此ObjectDB example code类似的内容。
正如上面引用的网页中所述,
抛出IllegalArgumentException 如果参数不是a,则删除 实体类的实例或如果它 是一个独立的实体。
我该怎么做?我做错了什么?
我的Role
实体与User
实体相关(角色可以“拥有”多个用户,用户只有一个角色)。但是,我要删除的Role
实例绝不会链接到任何活动的用户实例。
答案 0 :(得分:3)
感谢您的回答,但这对我没有多大帮助。虽然我认为它与JTA有关。 我发现了一个解决方案,所以我想在这里分享一下:
而不是:
public void removeRole(Role aRole) {
entityManager.remove(aRole);
}
我所要做的就是:
public void removeRole(Role aRole) {
entityManager.remove(entityManager.merge(aRole));
}
这就是诀窍。去搞清楚。
答案 1 :(得分:1)
你得到什么错误?
如果您使用的是JTA,则无法使用EntityManager事务,您必须使用JTA事务(EJB或来自conext的查找用户事务)。要么不将JPA配置为使用JTA,要么使用JTA而不是EM事务。