我已升级到 appengine sdk 1.8.0、appengine DN 2.1.2 和 DN 3.1.3。一切都很好。
在它声明的 appengine 文档中
Level2 Caching is enabled by default.
https://developers.google.com/appengine/docs/java/datastore/jpa/overview-dn2
我假设 JPA L2 缓存由 memcache 支持。
但是当我通过数据存储查看器更新实体时,JPA 代码仍然返回过时的数据版本。
我的 JPA 实体在下面
@Entity
@Cacheable(true)
@NamedQueries({ ....snip
public class GeoLocationUser implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Key key;
private double latitude;
查询是命名查询
@NamedQuery(name = GeoLocationUser.FIND_BY_USER_KEY,
query = "Select p from GeoLocationUser p where p.parentKey = :userKey"),
用例
实体是使用 JPA 代码创建的。
我使用数据存储查看器将实体中名为“纬度”的字段从“0.0”更新为“1.0”。
我使用 JPA 在我的应用程序上运行一个安静的查询。
返回的实体具有“纬度”=“0.0”
然后我刷新内存缓存
我使用 JPA 在我的应用程序上运行一个安静的查询。
返回的实体具有“纬度”=“0.0”
JPA 代码正在获取过时的数据,我不知道为什么。
Q1.我最欣赏对观察到的行为的任何解释。
Q2。appengine DN 2.1.2 是否由 memcache 支持?
谢谢-lp