java - 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 用于A
s 列表中的任何位置,它不会触发额外的查询!
我缺少配置吗?我试过了@Cache
,@Cacheable
没有区别。
我在这里粘贴了配置文件 ,application.properties 仅包含 3 个元素,包括 spring.datasource.url、用户名和密码。
解决方案
推荐阅读
- c# - 将可选参数传递给方法
- php - 在嵌套属性 ElasticSearch 中添加和删除对象
- c - 为什么在 Linux 上的多线程中 sleep 不像 usleep 那样工作?
- python - 如果包含超过 40% NaN Pandas,如何删除子数据框
- python - sqlalchemy.exc.InterfaceError: (pyodbc.InterfaceError) ('IM002', '[IM002] [Microsoft][ODBC Driver Manager]
- python-3.x - Python:加载数据时如何去掉脚注,有一对数字时如何选择第一个
- python - Windows 10 上的 Python 蓝牙
- java - Sprint JPA:如何将多对一对象添加到 MySQL
- html - flex 不尊重 chrome 中的子项宽度
- python - Gunicorn Flask 应用程序不执行系统命令