EclipseLink ManyToMany 关系 - 列表为空

EclipseLink ManyToMany relation - List is empty

我有以下配置:

Class 课程:

@Entity
public class Course implements Serializable {

    @ManyToMany(fetch = FetchType.LAZY)
    @JoinTable(name = "STUDENT_COURSE",
        joinColumns = {@JoinColumn(name = "ID_COURSE")},
        inverseJoinColumns = {@JoinColumn(name = "ID_STUDENT")})
    private List<Student> students = new ArrayList<Student>();

Class学生:

@Entity
public class Student implements Serializable {

    @ManyToMany(mappedBy = "students", fetch = FetchType.EAGER)
    private List<Course> courses = new ArrayList<Course>();

我正在使用 Spring-data,问题是当我想要获取 Student 对象时,课程列表总是空的(即使 FetchType.EAGER):

studentRepository.findByFirstName("Name").get(0).getCourses().size() == 0

以上配置与休眠的使用完美结合。有谁知道这里有什么问题? EclipseLink 是否需要更多东西?此外,我使用 pgAdmin 验证了数据,数据已按预期保存。

EclipseLink 使用默认启用的共享缓存,因此如果您在保存学生课程列表时没有填充它们,它们将一直保留在缓存中,直到重新加载。设置双向关系的双方(始终推荐,因为 JPA 不会为您设置它们)。

您可以使用查询提示强制刷新查询,或者在需要时禁用共享缓存。看 https://wiki.eclipse.org/EclipseLink/FAQ/How_to_disable_the_shared_cache%3F