2016-06-15 6 views
0

私はデータベース内のユーザを示すjspウェブページをコーディングしようとしています。このページは正しく機能しています。JPAエンティティは削除後も残っています

たとえば、ページ上のリンクをクリックしてデータベースからユーザーを削除することはできますが、残念ながらユーザーは次のページの読み込み時に引き続き表示されます。ページをリロードした後、ユーザーはなくなります。私は@Cacheable(false)をJPAクラスに追加しましたが、何も変わりませんでした。良好例ワークフロー理解のため

:ページがデータベース

  • から最初の10人とロードされる(「showUserHandler」サーブレットを呼び出す)Usermanagementに
    1. を管理クリック
    2. 管理者がユーザを削除する(によって
    3. サーブレットは、ユーザを削除し、ポイント番号1からshowUserHandlerを呼び出します。
    4. ページがロードされていますが、削除されたユーザi sがまだそこ
    5. F5を押すか、 "リロード" とユーザーが

    を行っているユーザーは、同様に削除されます。

    Users user = em.find(Users.class, request.getParameter("uId")); 
    if (user != null) { 
    em.getTransaction().begin(); 
    em.remove(user); 
    em.getTransaction().commit(); 
    em.close(); 
    } 
    

    そしてユーザーを読み込む:

    EntityManager em = SessionUtil.createManager(); 
    List<Users> usersList = em.createNamedQuery("Users.findAllOrdered", Users.class).setParameter("uId", Integer.parseInt(request.getParameter("lastID"))).setFirstResult(0).setMaxResults(10).getResultList(); 
    

    ことができる人何がいけないのか教えてください ?

  • +0

    showUserHandlerの削除と呼び出しが行われるステップ3サーブレットの完全なソースコードを共有できますか? –

    +1

    なぜJPAプロバイダのログを調べてみませんか? SQLが呼び出され、それがデータストア内にあるかどうかがわかり、キャッシュから来ているかどうかを確認できます。 JPA API呼び出しに頼っているだけで、大きなブラックボックスとして扱われていて、まったくデバッグされていません。 –

    +0

    @SanjeevSahaソースコードが – marian04

    答えて

    0

    エンティティを削除してトランザクションでロールバックを作成すると、コードがjava.lang.IllegalArgumentException: Removing a detached instanceを投げていると思います。これは、別の永続コンテキストでこのエンティティをロードおよび削除するために発生します。

    取引の中でfindを呼び出そうとしましたか?

    関連する問題