2016-10-01 2 views
0

XHTMLページにユーザのリストを表示したい。私は自分のmanagedBeanからEJB(3.0)を介してビジネスに要求を送り、次に別の要求をEJB(3.0)を介してDAOに送ります。 JPA 2とMySQLデータベースをエンティティマネージャで使用しています。リストを介してDAOからビジネスにEJBを介して格納されたID(プライマリキー)値を失う

私はその時点のすべての罰金では私のデータベース

@Remote(IDaoUser.class) 
@Stateless 
Public class DaoUser implements IDaoUser 

@PersitenceContext(unitName = "persistence_unit") 
Private EntityManager em; 

@Override 
Public List<User> getAll() { 
    Query query = em.createQuery("SELECT u FROM User u"); 
    List<User> users = query.getResultList(); 
    return users; 
} 

に次のリクエストを送信することだし、すべてが特にID(主キー)属性を持つ私は、私のリストにすべての私のユーザーを取得します。私のユーザークラスはid(プライマリキー)と呼ばれる属性が1つしかない別のクラスからもう一度継承するスーパークラスParent(名前、姓、メール、電話など)から継承します。 次に、リスト(ユーザー)をEJB経由でビジネスに戻します。ビジネスの中では、すべてのid属性が0であることを認識しています。ids以外のすべての属性(名前、forename ...)を保持しています。なぜ私がこれらの価値を失っているのかを理解する。 DAOの私のリストにはうまく格納されていますが、ビジネスではすべて一度0に変更されています。ここで

は、問題の説明を考えると

@Remote(IBusinessUser.class) 
@Stateless 
Public class BusinessUser implements IBusinessUser 

@EJB 
private IDaoUser proxy; 

@Override 
Public List<User> getAll() { 
    List<User> users = proxy.getAll(); 
    return users; 
} 

答えて

0

非常に単純である私のビジネスクラスで、私はいくつかの質問

  1. を求めるだろうつまり、彼らはと注釈が付けられ、親クラスの実体そのものです@エンティティ。
  2. @Idがプライマリキーにあることを確認する必要があります。 @Id注釈が主キーにありますか?

経験は、常に@Id属性をクラスに、または少なくとも@MappedSuperclassでタグ付けされた親クラスに持つように教えてくれました。そして、マッピングされたスーパークラスからidフィールドを取得することには依然として問題があります。

MappedSuperclassアノテーションを使用するためのJEEドキュメントを参照してください。これはあなたのオブジェクトの継承モデルを変更する必要があるかもしれませんが、それはあなたの要求を考慮すると問題ではありません。

0

ご協力ありがとうございます。実際、両方の親クラスはそれ自身エンティティです。スーパークラス "Who"は@Idアノテーションを持つid属性(主キー)を持つ唯一のものです。スーパークラスを@MappedSuperクラスでタグ付けすることはできません。別のクラスに関連付けられているからです。

関連する問題