我在我的实体中定义了一个集合,如下所示:
@Entity
public class User {
@OneToMany(mappedBy = "user")
private List<Role> roles = new ArrayList<Role>();
假设我手动将一个角色插入数据库。
当我调用user.getRoles()
时,JPA无法识别新对象。为了说JPA再次从数据库加载值,我该怎么做? (我使用EclipseLink)
答案 0 :(得分:2)
您可能正在使用L2缓存,并且您在直接在数据库中添加行时已经缓存了您的实体。
使用JPA,尝试em.refresh(entity)
。这将从数据库中获取所有持久字段。或者,如果基础数据库将在您的应用程序之外定期修改,请关闭L2缓存。