EntityManager不会在flush()上更新

时间:2010-06-02 15:00:41

标签: jpa entity-relationship flush entitymanager

Java EJB的EntityManager不会更新来自Consumer的数据。

消费者登录商店,购买一些东西,并想看看他的购物历史。一切都显示,但他最后一次购买。如果他退出并进入,则显示。

我已经使用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;
}

帮助!? Flush不会这样做......

1 个答案:

答案 0 :(得分:2)

您似乎在CustomerBuys之间存在双向一对多关联,但我看不到您将Buys实例添加到{{1}的位置在buysCollection方面。我期待看到这样的事情:

Customer

并确保implement equals (and hashCode) properly

我建议检查1.2.6. Working bi-directional links(并根据建议添加防御性链接管理方法)。