JPA:查询不获取最新数据

时间:2010-12-06 04:17:20

标签: java jpa

我发现JPA没有从数据库中获取最新数据。

我的数据模型有一个拥有多个订单实体的客户实体。我坚持下订单:

em.persist(order);
em.getTransaction().commit();
em.close();

要查看订单,请致电:

Collection<Order> orders = customer.getOrderCollection();

订单集合缺少最新订单。我已经检查过,订单会持久保存到数据库中。启用驱动程序日志记录后,在调用getOrderCollection()时,我看不到对数据库的任何调用。

在Netbeans 6.9中,当我停止&amp;重新部署应用程序,我看到我坚持出现的最新订单。那么也许有某种缓存可能会干扰getOrderCollection()?出于某种原因,JPA不会进入数据库。为什么呢?

如果在调用getOrderCollection()时强制JPA转到数据库?

2 个答案:

答案 0 :(得分:2)

在persistence.xml中尝试<shared-cache-mode>NONE</shared-cache-mode>

答案 1 :(得分:2)

您必须在对象模型中维护双向关系。为客户添加新订单时,必须将订单添加到客户订单中。

public void addOrder(Order order) {
  this.orders.add(order);
  order.setCustomer(this);
}

您也可以刷新对象或禁用缓存,但修复代码最好。

请参阅,

http://en.wikibooks.org/wiki/Java_Persistence/Caching

http://wiki.eclipse.org/EclipseLink/Examples/JPA/Caching