0

次の問題:

関係: |ショップ| --1--------n--> |製品|

だから私は多くの製品を持つことができるショップという名前のエンティティを持っています。

void addProductToShop(Shop shop, Product product);という関数を開発しました。

次のようになります。

public void addProductToShop(Shop shop, Product product)
{
    entityManager = entityManagerFactory.createEntityManager();
    entityManager.getTransaction().begin();

    shop = entityManager.merge(shop);
    shop.getProductList.add(product);

    entityManager.getTransaction().commit();
    entityManager.close();
}

すべてが正常に機能し、データベースに正しく書き込まれます。問題は、アプリケーション コードで 2 つのエンティティが更新されていないことです。

したがって、addProductToShop(shop, product);を呼び出した後。2 つの変数shopproductを更新する必要があります。それらには最新の変更がないためです (callByValue のため)。

しかし、この関数の消費者として、データベースだけでなく、呼び出し後にパラメーターが変更されると想定しています。各関数呼び出しの後にショップ製品の更新を要求せずにこれを達成するにはどうすればよいですか?

ベストプラクティスはありますか?

ありがとう、アレックス

4

2 に答える 2

0

わかった。

私の間違いは、最初にパラメーターからエンティティを変更してからマージする必要があるということでした...

したがって、パラメーターは、マージされたエンティティと同じ状態になります。

ちょっとした推理ミス…

よろしく、アレックス

于 2012-08-09T08:53:30.317 に答える
0

entityManager.refresh(Object) は、ショップと製品の両方で呼び出す必要があると思います。

于 2012-08-08T23:07:42.087 に答える