2011-01-17 3 views
0

私はデータベースを持っており、このデータベースのテーブルは相互に接続されています。 私はデータベース内のこれらのテーブル内のデータを処理するためにseamとEJBを使用しています。 私のバックエンドデータベースはpostgresです。論理的なEJBデータベースからの削除

今私がしようとしているのは、あるテーブルからデータを削除したいのですが、私がルールに違反していることを伝えるPostgres SQLエラーが出ています。 このデータベースを論理的に削除することができると私は理解しています
- データベースを削除してフラグを設定する必要がある状況。

しかし、私はこれを行う方法がわかりません。私はこれがシンプルだが、私を許していることを知っている。私はそれを知らない。どんな助けでも感謝します。以下は私が使用しているコードです。ご協力ありがとうございました。

public void delete() throws java.sql.SQLException { 
    System.out.println("I got here FIRST"); 
    user =em.find(Subscriber.class, subscriber.getId()); //ADDED LATER 
    users.remove(subscriber.getId()); 
    em.remove(subscriber); 
    userList(); 
} 
+0

使用している永続性マネージャー(Hibernate、TopLinkなど)の種類をお知らせください。 –

+0

違反しているルールはありますか? – Navi

答えて

1

一見してわかるように、照会しているユーザーを削除したいのですか?

したがって、あなたはfindメソッドから

をロードしたem.remove(user); //にem.remove(subscriber);を変更更新

ないと私はあなたがこれを行うことができます方法を示してみましょう、あなたはに対してチェックしたいflagの種類を知っています:

ユーザーには無効と呼ばれるブール値フィールドがあり、無効なユーザーのみを削除したいとします。

if(user.isDisabled()) 
    em.remove(user); 

flagがtrueの場合にのみ、ユーザーを削除します。

+0

あなたの返事をありがとうShervin、あなたは正しいです。このコードは機能します。 users = subscribersとuser = subscriberですが、em.remove(user)を実行すると、trueまたはfalseに設定されたフラグで論理的に削除され、falseの場合は取り除かれますが、ポストグルのルールに違反する助けてください。こんにちは – sammy

+0

Shervinありがとうございました。私はこれをテストしていませんが、私はまだそれをテストします。しかし、これが可能かどうか尋ねたいと思います。私のユーザは、それ自身で全体的な存在であることを忘れないでください。どのようにejbエンティティなので、どうすればフラグにすることができますか?私はちょうどそれをこのようにするなら、それは機能するか、それをブール値にキャストする必要がありますか?お返事をありがとうございます。私はそこに着いているようです。 – sammy

+0

@サミー:それに応じてコードを変更する必要があります。あなたがこの「旗」が何を使用しているか教えていただけたら、私はあなたを助けることができます。また、新しいメソッドを追加するとエンティティBeanに問題が発生した場合、メソッドの上部にアノテーション「@ Transient」を追加できます。これは、永続化プロバイダにこのメソッドをスキップするよう指示します。 –

関連する問題