1

我正在尝试将 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

4

0 回答 0