Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA刷新集合_Java_Jpa_Eclipselink - Fatal编程技术网

Java JPA刷新集合

Java JPA刷新集合,java,jpa,eclipselink,Java,Jpa,Eclipselink,我的实体中定义了一个集合,如下所示: @Entity public class User { @OneToMany(mappedBy = "user") private List<Role> roles = new ArrayList<Role>(); @实体 公共类用户{ @OneToMany(mappedBy=“用户”) 私有列表角色=新的ArrayList(); 假设我手动将一个角色插入数据库 当我随后调用user.getRoles()JPA无法识别新对象。我必

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

@Entity
public class User {
@OneToMany(mappedBy = "user")
private List<Role> roles = new ArrayList<Role>();
@实体
公共类用户{
@OneToMany(mappedBy=“用户”)
私有列表角色=新的ArrayList();
假设我手动将一个角色插入数据库


当我随后调用
user.getRoles()
JPA无法识别新对象。我必须做什么才能说JPA再次从数据库加载值?(我使用EclipseLink)

您可能正在使用二级缓存,并且在将行直接添加到数据库中时,您的实体已经被缓存


使用JPA,请尝试。这将从数据库中获取所有持久字段。或者,如果基础数据库将在应用程序外部定期修改,请关闭二级缓存。

建议的方法是管理关系的双方,就像在任何普通POJO中一样。此外,如果使用EclipseLink,为什么要标记Hibernate?wh您的意思是什么?您介意提供一个小示例吗?可能是缓存。请参阅此处的说明:“管理关系的双方”意味着在添加、删除或修改实体时,在关系的反面对集合进行相应的更改。JPA提供程序不负责按照规范执行此操作。行为是特定于提供程序的(如果有的话)。这是完全正确的。如果运行手动sql查询,JPA不知道这一点,因为f二级缓存,您应该明确地刷新它