我发现JPA没有从数据库中获取最新数据。
我的数据模型有一个拥有多个订单实体的客户实体。我坚持下订单:
em.persist(order);
em.getTransaction().commit();
em.close();
要查看订单,请致电:
Collection<Order> orders = customer.getOrderCollection();
订单集合缺少最新订单。我已经检查过,订单会持久保存到数据库中。启用驱动程序日志记录后,在调用getOrderCollection()时,我看不到对数据库的任何调用。
在Netbeans 6.9中,当我停止&amp;重新部署应用程序,我看到我坚持出现的最新订单。那么也许有某种缓存可能会干扰getOrderCollection()?出于某种原因,JPA不会进入数据库。为什么呢?
如果在调用getOrderCollection()时强制JPA转到数据库?
答案 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);
}
您也可以刷新对象或禁用缓存,但修复代码最好。
请参阅,