5

JSFとJPAを理解しようとしているだけですが、オブジェクトをデータベースに永続化しようとすると、書き留められないようです。これが私が使用しているコードです:

@Named
@ManagedBean
@SessionScoped
public class BestemmingController implements Serializable{

@PersistenceUnit(unitName="RealDolmenTravelShopPU")
@PersistenceContext(unitName="RealDolmenTravelShopPU")

EntityManagerFactory emf = null;
public void submit(){


        try{
            emf = Persistence.createEntityManagerFactory("RealDolmenTravelShopPU");

            EntityManager em = emf.createEntityManager();

            //EntityTransaction et = em.getTransaction();
            //et.begin();

            Bestemming nieuweBestemming = new Bestemming();

            Land gezochtLand = em.find(Land.class, selectedLand);

            nieuweBestemming.setLand(gezochtLand);
            nieuweBestemming.setNaam(bestemmingNaam);

            em.persist(nieuweBestemming);

            //et.commit();
            //em.flush();
            em.close();
        }catch (Exception e){
            e.printStackTrace();
        }finally{
            emf.close();
        }
    }

EntityTransactionを使用してみましたが、エラーなどが発生することなく、アプリケーションが停止しました。それで私はそれを省きました、しかしそれでもそれは書き留めませんでした。そこで、フラッシュを個別に呼び出してみましたが、それでも何も起こりませんでした。なぜこれが機能しないのか、私は本当に困惑しています。おそらく初心者の間違いかもしれませんが、ここの誰かが私を助けてくれるなら、私はそれが大好きです。

前もって感謝します!

4

2 に答える 2

0

トランザクションが実行されていなかった理由がわかりました。使用した実装ではJTAを使用せず、RESOURCE_LOCAL永続性ユニットを使用していました。それは私がプロジェクトを立ち上げたときに見たばかりのことでした。

私の相棒がサーバーログをチェックするように私に言ったのは良いことです。

于 2012-12-03T07:24:07.480 に答える
0

まず、ログに書き込むことができますか?永続性ユニットがJTAを使用するように指定するときにトランザクションを開始すると例外がスローされるため、コンテナログファイルで例外が欠落している可能性があります。

次に、これはJTA PUであるため、EMが関連付けられるJTAトランザクションを開始する必要があります。ファクトリを自分で作成するのではなく、EMを注入する必要があります。最初にここでJPAアプリケーションサーバーの例をチェックして、それらがどのように設定されているかを確認してください: http ://wiki.eclipse.org/EclipseLink/Examples/JPA

于 2012-12-02T20:15:28.600 に答える