如何关闭 Apache Olingo OData 2.0 缓存?

Posted

技术标签:

【中文标题】如何关闭 Apache Olingo OData 2.0 缓存?【英文标题】:How to switch off Apache Olingo OData 2.0 caching? 【发布时间】:2014-12-10 17:57:58 【问题描述】:

如何关闭 Apache Olingo 2.0 缓存?

Web 应用程序在 Tomcat 7 中运行并使用 mysql。它基于 Apache Olingo OData JPA 处理器构建。

当我更新数据库中的数据记录时,我可以通过这种请求正确找到该数据记录:“GET /interactive-riga-odata/webservices.svc/Statuss?$filter=(Updated%20gt%20datetime% 272014-10-15T12:25:44.054%27) HTTP/1.1"

问题是,我正在缓存此数据记录的先前版本,即使在过滤请求期间它是根据新值选择的。

【问题讨论】:

【参考方案1】:

原来必须禁用或清空 EclipseLink ORM 缓存。

可以通过在模型文件中添加注释来禁用它,如下所示:

@Entity
@Cacheable(false)
public class Employee 

或者将这些行之一放入persistance.xml 文件中:

<property name="eclipselink.cache.shared.default" value="false"/>

<shared-cache-mode>NONE</shared-cache-mode>

如果尝试使用数据缓存创建解决方案,可以使用某些 Web 服务在数据库发生某些更改后触发缓存失效(管理界面应用 ping Web 服务以让他们知道 MySQL 数据已更改)。

【讨论】:

以上是关于如何关闭 Apache Olingo OData 2.0 缓存?的主要内容,如果未能解决你的问题,请参考以下文章

Apache Olingo OData 2.0 不支持 Java 8 LocalDatetime (java.time)

如何在 Java SpringBoot 项目中集成 Olingo(Odata)

Apache Olingo 4.2 API 抛出 java.lang.IllegalArgumentException

Olingo Odata v4 - 从模型生成类型、集合和元数据

$filter 在带有 MySQL 的 JPA/Olingo 2.0.11 中不起作用

使用 apicontroller vs odata EntitySetController [关闭]