java - 我的 JPA 存储库请求正在返回缓存,而我没有在 Spring Boot 中启用它
问题描述
我需要帮助,因为我正在按顺序执行 3 个查询,但是 Spring 和 JPA 正在对不同的对象应用缓存
子对象建立在内存中返回相同,但在每个对象“食物、药物和配件”中,我必须对该子对象进行不同的更改,但是当我更改它时,似乎建立作为参考,即是,我将其更改为 a 并复制到其他人中。
Establishment obj = establishmentService.findById(id);
List<EstablishmentProduct> food = repo.findByEstablishmentAndProductSegment(obj, SegmentEnum.FOOD.getCod());
List<EstablishmentProduct> medication = repo.findByEstablishmentAndProductSegment(obj, SegmentEnum.MEDICATION.getCod());
List<EstablishmentProduct> accessories = repo.findByEstablishmentAndProductSegment(obj, SegmentEnum.ACCESSORIES.getCod());
我的实体
@Entity
public class EstablishmentProduct implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String description;
private Integer status;
private Integer quantity;
private Double value;
private Integer productSegment;
private boolean deleted = false;
@ManyToOne(cascade = CascadeType.DETACH)
@JoinColumn(name = "product_id")
private Product product;
@JsonIgnore
@ManyToOne()
@JoinColumn(name = "establishment_id")
private Establishment establishment;
@Repository
public interface EstablishmentProductRepository extends JpaRepository<EstablishmentProduct, Integer> {
List<EstablishmentProduct> findByEstablishmentAndProductSegment(Establishment establishment, Integer productSegment);
伙计们,尽管查询是由实体进行的,但已经通过机构 ID 进行了测试,并返回了实体机构子类的相同指针
建立 obj = 建立服务.findById(id);
在我看来,Spring 和 JPA 正在应用我没有请求的缓存,我希望对于每个findByEstablishmentAndProductSegment ne 它都会返回新的子对象,而没有缓存。
我已经以各种方式禁用了缓存,但没有任何效果。
我知道Establishment 对象不会改变,但Product 对象会改变,但正如我所提到的,我需要对返回的每个段的information 进行更改
你能帮助我吗 ?
解决方案
您正在看到无法禁用的 JPA 一级缓存的效果。但是您可以从 中驱逐一些或所有实体,EntityManager
或者启动一个新会话,该会话将从一个空缓存开始。
推荐阅读
- javascript - 数据表自定义列过滤器在 codepen 示例中有效,但在 html 页面中无效
- netsuite - netsutie:如何在不丢失 netsuite 表单数据的情况下重新加载当前页面
- strapi - Strapi如何在后台启动?
- c++ - C++中向量的结构填充
- java - eachWithIndex 循环不稳定
- google-drive-api - 我可以将 Google Drives list() 请求限制为在我的域中拥有的文件吗?
- windows - 我如何知道桌面显示的时间?
- angular - 响应式表单未使用第三方地址查找进行更新
- python - JSONDecodeError:使用 googletrans 模块
- oledb - 运算符/操作数类型不匹配