2013-10-18 43 views
0

我正在使用JPA爲學校製作項目。我試圖堅持一個對象,但我得到一個我無法修復的錯誤。我讀過,我必須使用usertransaction而不是entitytransaction,但在本課中我們沒有得到太多信息,所以我對這個主題不太瞭解。我如何解決這個錯誤並能夠堅持下去?IllegalStateException:使用JTA時無法使用EntityTransaction

這是錯誤我得到:

java.lang.IllegalStateException: 
Exception Description: Cannot use an EntityTransaction while using JTA. 

這裏是我使用的代碼:

回答

2

我建議使用無狀態EJB與事務容器管理的實體管理器由JTA照顧。請參閱this Section in Java EE 6-Tutorial
容器管理只是通過更復雜的應用程序管理方式進行選擇的簡單方法,除非您有充足的理由這樣做。

試試這個:

package containing.package; 

import package.of.your.UserService 

import java.io.Serializable; 
import javax.ejb.Stateless; 
import javax.persistence.EntityManager; 
import javax.persistence.PersistenceContext; 

@Stateless 
public class UserServiceImpl implements UserService, Serializable { 
    @PersistenceContext 
    EntityManager em; 

    @Override 
    public User register(User user) {   
     em.persist(user); 
     return user; 
    } 
} 
+0

我第一次嘗試這樣做,但後來我得到一個TransactionRequiredException。任何想法如何解決這一問題? – Lewis

+0

您正在使用JavaEE 6?我們談論的代碼是在EJB內部的嗎?請發佈完整的課程代碼。在你的下一個評論中使用'@ Lester'讓我知道。 – Lester

+0

是的,我使用JavaEE 6,並添加了其餘的代碼。 – Lewis