1

Java EJBのEntityManagerは、コンシューマーからのデータを更新しません。

消費者は店にログインし、何かを購入して、自分の買い物履歴を見たいと思っています。彼の最後の購入以外はすべて表示されます。彼がログアウトしてログインすると、表示されます。

私はJPAを使用して、購入/購入(コンシューマーにマップされている)をDBに永続化しました。このセッションからの購入を検出できないようです。

コード:

public Buys buyItem(Consumer c, int amount) {
    Buys b = new Buys();
    b.setConsumerId(c);
    b.setContent("DVD");
    b.setPrice(amount);
    em.persist(b);
    em.flush();
    return b;
}

public Collection getAllBuysFromUser(Consumer consumer) {
   Collection<Buys> collection = consumer.getBuysCollection();
   return collection;
}

ヘルプ!?フラッシュはトリックを行いません...

4

1 に答える 1

2

Customerとの間には双方向の1対多の関連付けがあるようですが、側面のどこにインスタンスをBuys追加するかわかりません。私はこのようなものを見ることを期待しています:BuysbuysCollectionCustomer

public Buys buyItem(Consumer c, int amount) {
    Buys b = new Buys();
    b.setConsumerId(c);
    b.setContent("DVD");
    b.setPrice(amount);
    c.getBuysCollection().add(b);
    em.persist(b);
    em.flush();
    return b;
}

そして、適切に実装equals(およびhashCode)するようにしてください。

1.2.6を確認することをお勧めします。双方向リンクの動作(および提案されている防御リンク管理方法の追加)。

于 2010-06-02T16:15:20.967 に答える