2011-02-24 39 views
2

我創建了一個Role實體,我想這樣做就可以了CRUD操作。除了「D」(刪除)操作之外,一切運作良好。當調用JPA的remove(): 「A JTA EntityManager的不能使用getTransaction()」

我使用類似於ObjectDB example code的東西。

如在上面引述的網頁說明,

一個IllegalArgumentException通過移除或者如果它是 分離實體拋出 如果參數不是實體類的一個 實例。

我應該怎麼辦呢?我做錯了什麼?

我的Role實體與User實體(一個角色可以「有」幾個用戶,一個用戶只有一個角色)有關。但是,我想要刪除的Role實例絕不會鏈接到任何活動的用戶實例。

回答

3

謝謝你的回答,但它對我沒有多大幫助。雖然我認爲它與JTA有關。 我發現了一個解決方案。然而,讓我想在這裏分享:

相反的:

public void removeRole(Role aRole) { 
    entityManager.remove(aRole);  
} 

所有我需要做的就是:

public void removeRole(Role aRole) { 
entityManager.remove(entityManager.merge(aRole)); 
} 

而且,做的招。去搞清楚。

1

你得到了什麼錯誤?

如果您正在使用JTA,你不能使用EntityManager的事務,必須使用JTA事務(EJB,或查找用戶交易從conext)。要麼不要將JPA配置爲使用JTA,要麼使用JTA而不是EM事務。

相關問題