0

以下问题:

关系: |店铺| --1--------n--> |产品|

所以我有一个实体名为 shop 可以有很多产品。

我开发了一个名为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();
}

一切正常,并正确写入数据库。问题是,我的应用程序代码中没有更新这两个实体。

所以在调用addProductToShop(shop, product); 您必须更新shopproduct这两个变量,因为它们没有最新的更改(因为 callByValue)。

但是作为这个函数的使用者,我假设我的参数在调用之后发生了变化,而不仅仅是数据库。如何在每次函数调用后不要求更新商店产品的情况下实现这一点。

有没有最佳实践?

谢谢,亚历克斯

4

2 回答 2

0

我知道了。

我的错误是我应该首先从参数中更改实体,然后进行合并...

因此参数具有与合并实体相同的状态。

推理中的小错误...

问候,亚历克斯

于 2012-08-09T08:53:30.317 回答
0

我认为 entityManager.refresh(Object) 是您需要为商店和产品调用的内容。

于 2012-08-08T23:07:42.087 回答