JPA刷新集合

时间:2015-11-09 14:13:44

标签: java jpa eclipselink

我在我的实体中定义了一个集合,如下所示:

@Entity
public class User {
@OneToMany(mappedBy = "user")
private List<Role> roles = new ArrayList<Role>();

假设我手动将一个角色插入数据库。

当我调用user.getRoles()时,JPA无法识别新对象。为了说JPA再次从数据库加载值,我该怎么做? (我使用EclipseLink)

1 个答案:

答案 0 :(得分:2)

您可能正在使用L2缓存,并且您在直接在数据库中添加行时已经缓存了您的实体。

使用JPA,尝试em.refresh(entity)。这将从数据库中获取所有持久字段。或者,如果基础数据库将在您的应用程序之外定期修改,请关闭L2缓存。