【问题标题】:EclipseLink ManyToMany relation - List is emptyEclipseLink ManyToMany 关系 - 列表为空
【发布时间】:2016-10-20 21:13:13
【问题描述】:

我有以下配置:

课堂课程:

@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

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

【问题讨论】:

    标签: java hibernate jpa eclipselink


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,设置 对我有用。但我真的不明白你的意思:
    • "设置双向关系的双方(始终推荐,因为 JPA 不会为您设置它们)。" - 您能否提供更多详细信息或示例?
    猜你喜欢
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 2021-07-31
    • 2021-06-20
    • 2012-03-14
    相关资源
    最近更新 更多