EclipseLink ManyToMany关系 - 列表为空

时间:2016-10-20 21:13:13

标签: java hibernate jpa eclipselink

我有以下配置:

课程:

@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>();

班级学生:

@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

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

1 个答案:

答案 0 :(得分:0)

EclipseLink使用默认启用的共享缓存,因此如果在持久化时没有填充学生的课程列表,它们将在缓存中保持这种状态,直到它们被重新加载。设置双向关系的两侧(始终建议,因为JPA不会为您设置它们)。

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