首页 > 解决方案 > EclipseLink 中的缓存 - 防止使用相同参数的重复查询

问题描述

我正在尝试使用 EclipseLink JPA 和 SpringBoot 创建一个项目,并且我配置了两个实体,如下所示:

class A{
     @OneToOne
     @JoinColumn(name = "UPDTR_ID", referencedColumnName = "PRSN_ID")
     private Person updater;

     @OneToOne
     @JoinColumn(name = "CREATR_ID", referencedColumnName = "PRSN_ID")
     private Person creator;

     @OneToOne
     @JoinColumn(name = "ASGNE_ID", referencedColumnName = "PRSN_ID")
     private Person assignee;

    ...

}

class Person{
    @Id
    @Column(name = "PRSN_ID")
    private String prsnId;

    ...


}

当我执行findAll()on classA时,对于每个条目,我看到的 Person 表都有 3 个查询,即使在所有三个属性中都有相同的 id 时也是如此。我假设如果从 Person 获取 ID 1,如果该 ID 用于As 列表中的任何位置,它不会触发额外的查询!

我缺少配置吗?我试过了@Cache@Cacheable没有区别。

我在这里粘贴了配置文件 ,application.properties 仅包含 3 个元素,包括 spring.datasource.url、用户名和密码。

标签: javaspring-bootjpaspring-data-jpaeclipselink

解决方案


推荐阅读