我正在尝试将 datanucleus jpa 2 级缓存与 appengine 一起使用。
我真的不清楚如何为 appengine 配置。
我有以下
persistence.xml
<property name="datanucleus.cache.level2" value="true"/>
<property name="datanucleus.cache.level2.type" value="javax.cache"/>
<property name="datanucleus.cache.level2.cacheName" value="xxxxx"/>
和 Maven 片段
pom.xml
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-jpa</artifactId>
<version>1.1.5</version>
</dependency>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-cache</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>com.google.appengine.orm</groupId>
<artifactId>datanucleus-appengine</artifactId>
<version>1.0.10</version>
</dependency>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-core</artifactId>
<version>1.1.5</version>
</dependecny>
现在的问题是,当我持久化一个实体时,它会返回一个主键,但它不能从数据存储查看器或其他查询中获得。我在本地开发、junit 测试或 appengine 的远程实例中遇到了这个问题。
删除缓存配置后,代码就可以正常工作。
测试片段
@Test
public void findById(){
MerchantPromotion merchantPromotion1 = new MerchantPromotion();
em.persist(merchantPromotion1);
MerchantPromotion merchantPromotion = dao.findById( merchantPromotion1.getKey() );
assertNotNull( merchantPromotion); <---- assert fails here
}
问题是什么?
谢谢
-lp