【问题标题】:Making Spring Data JPA work with DataNucleus (GAE) (Spring Boot)使 Spring Data JPA 与 DataNucleus (GAE) (Spring Boot) 一起工作
【发布时间】:2014-07-29 18:42:18
【问题描述】:

有几个提示表明 Spring Data 可以与 Google App Engine 一起使用,例如:

大部分示例都不是“Spring Boot”,所以我一直在尝试用它进行改造。但是,我已经被这个错误困扰了好几天:

[INFO] Caused by: java.lang.NullPointerException
[INFO]  at org.datanucleus.api.jpa.metamodel.SingularAttributeImpl.isVersion(SingularAttributeImpl.java:79)
[INFO]  at org.springframework.data.jpa.repository.support.JpaMetamodelEntityInformation.findVersionAttribute(JpaMetamodelEntityInformation.java:102)
[INFO]  at org.springframework.data.jpa.repository.support.JpaMetamodelEntityInformation.<init>(JpaMetamodelEntityInformation.java:79)
[INFO]  at org.springframework.data.jpa.repository.support.JpaEntityInformationSupport.getMetadata(JpaEntityInformationSupport.java:65)
[INFO]  at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getEntityInformation(JpaRepositoryFactory.java:149)
[INFO]  at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:88)
[INFO]  at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:68)
[INFO]  at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:158)
[INFO]  at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn(RepositoryFactoryBeanSupport.java:224)
[INFO]  at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:210)
[INFO]  at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:92)
[INFO]  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$6.run(AbstractAutowireCapableBeanFactory.java:1602)
[INFO]  at java.security.AccessController.doPrivileged(Native Method)
[INFO]  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1599)
[INFO]  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1549)
[INFO]  ... 40 more

在哪里,我正在尝试将 Spring Data JPA 与 DataNucleus/AppEngine 一起使用:

@Configuration
@ComponentScan
@EnableJpaRepositories
@EnableTransactionManagement
class JpaApplicationConfig {
    private static final Logger logger = Logger
            .getLogger(JpaApplicationConfig.class.getName());
    @Bean
    public EntityManagerFactory entityManagerFactory() {
        logger.info("Loading Entity Manager...");
        return Persistence
                .createEntityManagerFactory("transactions-optional");
    }

    @Bean
    public PlatformTransactionManager transactionManager() {
        logger.info("Loading Transaction Manager...");
        final JpaTransactionManager txManager = new JpaTransactionManager();
        txManager.setEntityManagerFactory(entityManagerFactory());
        return txManager;
    }
}

我已经测试了Persistence.createEntityManagerFactory("transactions-optional"); 以查看应用程序是否可以使用此 EMF 持续存在,嗯,确实如此,所以我确信此 EMF 可以正常工作。问题是 Spring Data JPA 的“接线”,有人可以帮忙吗?

【问题讨论】:

    标签: java spring google-app-engine jpa spring-data-jpa


    【解决方案1】:

    你是说这个问题吗 http://www.datanucleus.org/servlet/jira/browse/NUCJPA-250 因为这似乎很久以前就已经解决了。显然,您必须获得一个可以与您的 JPA 提供程序版本一起使用的 GAE 版本。

    【讨论】:

    • 我不能使用那个版本的DN,我认为GAE还不支持它,太糟糕了:-(
    • 好吧,他们的 SVN 版本似乎可以使用它。 code.google.com/p/datanucleus-appengine/wiki/Compatibility
    • @NeilStockton,你知道如何在 Gradle 项目中使用来自 SVN 的 datanucleus-appengine 吗?
    【解决方案2】:

    另一种解决方法是切换回 Spring Data 1.3.0。
    如果您不想浪费一天时间配置 Spring 上下文和依赖项,我推荐它。

    【讨论】:

      猜你喜欢
      • 2014-10-21
      • 2017-05-09
      • 2019-08-04
      • 2016-10-04
      • 2017-09-22
      • 2014-03-10
      • 2015-04-20
      • 1970-01-01
      • 2020-02-07
      相关资源
      最近更新 更多