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
我有以下配置:
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